Explorar o código

+ commented why wrappers for cdecl'd methods use subl/call/subl/ret instead of subl/jmp

git-svn-id: trunk@12829 -
florian %!s(int64=16) %!d(string=hai) anos
pai
achega
f49f148e01
Modificáronse 1 ficheiros con 5 adicións e 0 borrados
  1. 5 0
      compiler/i386/cgcpu.pas

+ 5 - 0
compiler/i386/cgcpu.pas

@@ -534,6 +534,11 @@ unit cgcpu;
            set self parameter to correct value
            set self parameter to correct value
            call mangledname
            call mangledname
            set self parameter to interface value
            set self parameter to interface value
+           ret
+
+           This is different to case (0) because in theory, the caller
+           could reuse the data pushed on the stack so we've to return
+           it unmodified because self is const.
 
 
       (2): The wrapper code use %eax to reach the virtual method address
       (2): The wrapper code use %eax to reach the virtual method address
            set self to correct value
            set self to correct value