I am trying to update pascal script.

It seems that at some time there where changes in the register usage for calling constructors.

At least I found the following code:
              {$IF DEFINED (fpc) and (fpc_version < 3)}
                if IsConstructor or IsVirtualCons then
                  tbtu32(res.dta^) := RealCall_Register(Address, EDX, EAX, ECX,
                  @Stack[Length(Stack) - 3], Length(Stack) div 4, 4, nil)
                else
             {$IFEND}
                  tbtu32(res.dta^) := RealCall_Register(Address, EAX, EDX, ECX,
                  @Stack[Length(Stack) - 3], Length(Stack) div 4, 4, nil);

Also which versions are affected?

My testing indicates that this may apply for 3.1 (trunk).
But 3.0.x  seems to use the same as 2.x ?


And are other calls (maybe destructor) affected?

Or does destructor (or maybe virtual methods?) generally take a different order than other methods.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to