mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 10:29:24 +02:00
+ also added PCodePointer and PPCodePointer
git-svn-id: trunk@24841 -
This commit is contained in:
parent
9b59809ac3
commit
54c4c8155b
@ -561,7 +561,7 @@
|
|||||||
PMsgIntTable = ^TMsgIntTable;
|
PMsgIntTable = ^TMsgIntTable;
|
||||||
TMsgIntTable = record
|
TMsgIntTable = record
|
||||||
index : dword;
|
index : dword;
|
||||||
method : pointer;
|
method : codepointer;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
PMsgInt = ^TMsgInt;
|
PMsgInt = ^TMsgInt;
|
||||||
@ -716,23 +716,23 @@
|
|||||||
etVirtualMethodResult:
|
etVirtualMethodResult:
|
||||||
begin
|
begin
|
||||||
// IOffset is relative to the VMT, not to instance.
|
// IOffset is relative to the VMT, not to instance.
|
||||||
Getter.code := PPointer(PByte(PPointer(Instance)^) + IEntry^.IOffset)^;
|
Getter.code := PCodePointer(PByte(PPointer(Instance)^) + IEntry^.IOffset)^;
|
||||||
TInterfaceGetter(Getter)(obj);
|
TInterfaceGetter(Getter)(obj);
|
||||||
end;
|
end;
|
||||||
etVirtualMethodClass:
|
etVirtualMethodClass:
|
||||||
begin
|
begin
|
||||||
// IOffset is relative to the VMT, not to instance.
|
// IOffset is relative to the VMT, not to instance.
|
||||||
Getter.code := PPointer(PByte(PPointer(Instance)^) + IEntry^.IOffset)^;
|
Getter.code := PCodePointer(PByte(PPointer(Instance)^) + IEntry^.IOffset)^;
|
||||||
TObject(obj) := TClassGetter(Getter)();
|
TObject(obj) := TClassGetter(Getter)();
|
||||||
end;
|
end;
|
||||||
etStaticMethodResult:
|
etStaticMethodResult:
|
||||||
begin
|
begin
|
||||||
Getter.code := Pointer(IEntry^.IOffset);
|
Getter.code := CodePointer(IEntry^.IOffset);
|
||||||
TInterfaceGetter(Getter)(obj);
|
TInterfaceGetter(Getter)(obj);
|
||||||
end;
|
end;
|
||||||
etStaticMethodClass:
|
etStaticMethodClass:
|
||||||
begin
|
begin
|
||||||
Getter.code := Pointer(IEntry^.IOffset);
|
Getter.code := CodePointer(IEntry^.IOffset);
|
||||||
TObject(obj) := TClassGetter(Getter)();
|
TObject(obj) := TClassGetter(Getter)();
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -83,7 +83,7 @@
|
|||||||
{ to access the message table from outside }
|
{ to access the message table from outside }
|
||||||
TMsgStrTable = record
|
TMsgStrTable = record
|
||||||
name : pshortstring;
|
name : pshortstring;
|
||||||
method : pointer;
|
method : codepointer;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
PMsgStrTable = ^TMsgStrTable;
|
PMsgStrTable = ^TMsgStrTable;
|
||||||
|
@ -452,6 +452,9 @@ type
|
|||||||
PPointer = ^Pointer;
|
PPointer = ^Pointer;
|
||||||
PPPointer = ^PPointer;
|
PPPointer = ^PPointer;
|
||||||
|
|
||||||
|
PCodePointer = ^CodePointer;
|
||||||
|
PPCodePointer = ^PCodePointer;
|
||||||
|
|
||||||
PBoolean = ^Boolean;
|
PBoolean = ^Boolean;
|
||||||
PWordBool = ^WordBool;
|
PWordBool = ^WordBool;
|
||||||
PLongBool = ^LongBool;
|
PLongBool = ^LongBool;
|
||||||
|
Loading…
Reference in New Issue
Block a user