mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 09:28:19 +02:00
* fixed vmt issues on 64 bit systems
This commit is contained in:
parent
c0c83b91f8
commit
6bf70cec85
@ -20,29 +20,29 @@
|
||||
|
||||
const
|
||||
vmtInstanceSize = 0;
|
||||
vmtParent = 8;
|
||||
vmtParent = sizeof(longint)*2;
|
||||
{ These were negative value's, but are now positive, else classes
|
||||
couldn't be used with shared linking which copies only all data from
|
||||
the .global directive and not the data before the directive (PFV) }
|
||||
vmtClassName = 12;
|
||||
vmtDynamicTable = 16;
|
||||
vmtMethodTable = 20;
|
||||
vmtFieldTable = 24;
|
||||
vmtTypeInfo = 28;
|
||||
vmtInitTable = 32;
|
||||
vmtAutoTable = 36;
|
||||
vmtIntfTable = 40;
|
||||
vmtMsgStrPtr = 44;
|
||||
vmtClassName = vmtParent+sizeof(pointer);
|
||||
vmtDynamicTable = vmtParent+sizeof(pointer)*2;
|
||||
vmtMethodTable = vmtParent+sizeof(pointer)*3;
|
||||
vmtFieldTable = vmtParent+sizeof(pointer)*4;
|
||||
vmtTypeInfo = vmtParent+sizeof(pointer)*5;
|
||||
vmtInitTable = vmtParent+sizeof(pointer)*6;
|
||||
vmtAutoTable = vmtParent+sizeof(pointer)*7;
|
||||
vmtIntfTable = vmtParent+sizeof(pointer)*8;
|
||||
vmtMsgStrPtr = vmtParent+sizeof(pointer)*9;
|
||||
{ methods }
|
||||
vmtMethodStart = 48;
|
||||
vmtMethodStart = vmtParent+sizeof(pointer)*10;
|
||||
vmtDestroy = vmtMethodStart;
|
||||
vmtNewInstance = vmtMethodStart+4;
|
||||
vmtFreeInstance = vmtMethodStart+8;
|
||||
vmtSafeCallException = vmtMethodStart+12;
|
||||
vmtDefaultHandler = vmtMethodStart+16;
|
||||
vmtAfterConstruction = vmtMethodStart+20;
|
||||
vmtBeforeDestruction = vmtMethodStart+24;
|
||||
vmtDefaultHandlerStr = vmtMethodStart+28;
|
||||
vmtNewInstance = vmtMethodStart+sizeof(pointer);
|
||||
vmtFreeInstance = vmtMethodStart+sizeof(pointer)*2;
|
||||
vmtSafeCallException = vmtMethodStart+sizeof(pointer)*3;
|
||||
vmtDefaultHandler = vmtMethodStart+sizeof(pointer)*4;
|
||||
vmtAfterConstruction = vmtMethodStart+sizeof(pointer)*5;
|
||||
vmtBeforeDestruction = vmtMethodStart+sizeof(pointer)*6;
|
||||
vmtDefaultHandlerStr = vmtMethodStart+sizeof(pointer)*7;
|
||||
|
||||
type
|
||||
TextFile = Text;
|
||||
@ -102,9 +102,9 @@
|
||||
|
||||
TObject = class
|
||||
public
|
||||
{ please don't change the order of virtual methods, because }
|
||||
{ their vmt offsets are used by some assembler code which uses }
|
||||
{ hard coded addresses (FK) }
|
||||
{ please don't change the order of virtual methods, because
|
||||
their vmt offsets are used by some assembler code which uses
|
||||
hard coded addresses (FK) }
|
||||
constructor Create;
|
||||
{ the virtual procedures must be in THAT order }
|
||||
destructor Destroy;virtual;
|
||||
@ -299,7 +299,10 @@
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.21 2003-12-06 00:02:34 florian
|
||||
Revision 1.22 2004-04-25 16:32:31 florian
|
||||
* fixed vmt issues on 64 bit systems
|
||||
|
||||
Revision 1.21 2003/12/06 00:02:34 florian
|
||||
* widechars in tvarrec fixed for big endian machines as well
|
||||
|
||||
Revision 1.20 2003/12/05 23:54:04 jonas
|
||||
@ -323,4 +326,4 @@
|
||||
Revision 1.14 2002/09/07 15:07:46 peter
|
||||
* old logs removed and tabs fixed
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user