diff --git a/rtl/inc/objects.pp b/rtl/inc/objects.pp index 30c0306e3c..37d53240b0 100644 --- a/rtl/inc/objects.pp +++ b/rtl/inc/objects.pp @@ -716,6 +716,13 @@ end ['EAX']; move.l (a6),d0 end ['D0']; {$endif} +{$ifdef sparc} +{$define FPC_PreviousFramePointer_Implemented} + { we have first our own frame } + ld [%fp],%i0 + ld [%io],%i0 +end; +{$endif} {$ifdef powerpc} {$define FPC_PreviousFramePointer_Implemented} {$warning FIX ME !!!! } @@ -732,6 +739,7 @@ end; function CallPointerConstructor(Ctor: pointer; Obj: pointer; VMT: pointer; Param1: pointer): pointer; {$undef FPC_CallPointerConstructor_Implemented} begin +{$ifdef VER1_0} asm {$ifdef i386} {$define FPC_CallPointerConstructor_Implemented} @@ -742,6 +750,10 @@ begin move.l Obj, a5 {$endif} end; +{$else} +{ 1.1 does not esi to be loaded } +{$define FPC_CallPointerConstructor_Implemented} +{$endif} CallPointerConstructor := PointerConstructor(Ctor)(VMT, Obj, Param1) end; {$ifdef powerpc} @@ -757,6 +769,7 @@ end; function CallPointerMethod(Method: pointer; Obj: pointer; Param1: pointer): pointer; {$undef FPC_CallPointerMethod_Implemented} begin +{$ifdef VER1_0} asm {$ifdef i386} {$define FPC_CallPointerMethod_Implemented} @@ -772,6 +785,10 @@ begin so self should be in a register anyways } {$endif} end; +{$else} +{ 1.1 does not esi to be loaded } +{$define FPC_CallPointerMethod_Implemented} +{$endif} CallPointerMethod := PointerMethod(Method)(Obj, Param1) end; {$ifndef FPC_CallPointerMethod_Implemented} @@ -2910,7 +2927,10 @@ END; END. { $Log$ - Revision 1.19 2003-06-05 14:45:56 peter + Revision 1.20 2003-07-08 21:21:33 peter + * 1.1 does not need to load esi + + Revision 1.19 2003/06/05 14:45:56 peter * use Windows THandle Revision 1.18 2003/01/05 16:27:05 hajny