mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-04 23:49:37 +01:00
+ Implemented (hopefully correct) DoSuperMethodA()
git-svn-id: trunk@1832 -
This commit is contained in:
parent
7459e9431c
commit
548bf2f29f
@ -23,6 +23,9 @@ interface
|
|||||||
function DoMethod(obj : longword; msg : array of LongWord): longword;
|
function DoMethod(obj : longword; msg : array of LongWord): longword;
|
||||||
function DoMethodA(obj : longword; msg1 : Pointer): longword; assembler;
|
function DoMethodA(obj : longword; msg1 : Pointer): longword; assembler;
|
||||||
|
|
||||||
|
function DoSuperMethod(class_: longword; obj : longword; msg : array of LongWord): longword;
|
||||||
|
function DoSuperMethodA(class_: longword; obj : longword; msg1 : Pointer): longword; assembler;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
function DoMethodA(obj : longword; msg1 : Pointer): longword; assembler;
|
function DoMethodA(obj : longword; msg1 : Pointer): longword; assembler;
|
||||||
@ -47,4 +50,26 @@ begin
|
|||||||
DoMethod:=DoMethodA(obj, @msg);
|
DoMethod:=DoMethodA(obj, @msg);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function DoSuperMethodA(class_: longword; obj : longword; msg1 : Pointer): longword; assembler;
|
||||||
|
asm
|
||||||
|
mflr r31
|
||||||
|
|
||||||
|
stw r3,32(r2)
|
||||||
|
stw r5,36(r2)
|
||||||
|
stw r4,40(r2)
|
||||||
|
|
||||||
|
lwz r11,104(r2)
|
||||||
|
lwz r9,24(r3)
|
||||||
|
lwz r3,8(r9)
|
||||||
|
mtlr r11
|
||||||
|
blrl
|
||||||
|
|
||||||
|
mtlr r31
|
||||||
|
end ['R31'];
|
||||||
|
|
||||||
|
function DoSuperMethod(class_: longword; obj : longword; msg : array of LongWord): longword;
|
||||||
|
begin
|
||||||
|
DoSuperMethod:=DoSuperMethodA(class_, obj, @msg);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user