+ Implemented (hopefully correct) DoSuperMethodA()

git-svn-id: trunk@1832 -
This commit is contained in:
Károly Balogh 2005-11-27 06:01:50 +00:00
parent 7459e9431c
commit 548bf2f29f

View File

@ -23,6 +23,9 @@ interface
function DoMethod(obj : longword; msg : array of LongWord): longword;
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
function DoMethodA(obj : longword; msg1 : Pointer): longword; assembler;
@ -47,4 +50,26 @@ begin
DoMethod:=DoMethodA(obj, @msg);
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.