From d6c25bee27ffec20501073d8331fe1eeb7b8a0cc Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Tue, 19 Feb 2013 17:31:14 -0500 Subject: [PATCH] compiler, ide, com: Some level of cross-bit depth debugging support --- compiler/bootstrap/ecere/bootstrap/instance.c | 39 +++++++++++-------- compiler/bootstrap/libec/bootstrap/ecdefs.c | 6 +++ compiler/libec/src/ecdefs.ec | 5 +++ ecere/src/com/instance.ec | 54 +++++++++++++++------------ ide/src/designer/CodeEditor.ec | 2 +- 5 files changed, 66 insertions(+), 40 deletions(-) diff --git a/compiler/bootstrap/ecere/bootstrap/instance.c b/compiler/bootstrap/ecere/bootstrap/instance.c index cb0f9dd..4f19a56 100644 --- a/compiler/bootstrap/ecere/bootstrap/instance.c +++ b/compiler/bootstrap/ecere/bootstrap/instance.c @@ -1426,6 +1426,8 @@ void * __ecereTemp1; int start = 0, c; struct __ecereNameSpace__ecere__com__NameSpace * nameSpace = (((void *)0)); unsigned int force64Bits = ((unsigned int)((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->isGUIApp & 2) ? 0x1 : 0x0; +unsigned int force32Bits = ((unsigned int)((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->isGUIApp & 4) ? 0x1 : 0x0; +unsigned int forceX = ((unsigned int)((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->isGUIApp & 8) ? 0x1 : 0x0; { nameSpace = (declMode == 1) ? &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->publicNameSpace : &((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->privateNameSpace; @@ -1759,13 +1761,15 @@ id++; } _class->memberID = _class->startMemberID = (base && (type == 0 || type == 5 || type == 1)) ? base->memberID : 0; if(type == 0 || type == 5) -_class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : (force64Bits ? 24 : 12)); -if(force64Bits) +_class->offset = (base && base->structSize && base->type != 1000) ? base->structSize : ((type == 5) ? 0 : (force64Bits ? 24 : force32Bits ? 12 : 12)); +if(force64Bits || force32Bits || forceX) { if(!strcmp(name, "ecere::com::Class")) size = 0; else if(!strcmp(name, "ecere::com::ClassProperty")) size = 0; +else if(!strcmp(name, "ecere::com::NameSpace")) +size = 0; else if(!strcmp(name, "ecere::sys::BufferedFile")) size = 0; else if(!strcmp(name, "ecere::sys::BTNode")) @@ -1787,7 +1791,7 @@ size = 0; else if(!strcmp(name, "ecere::sys::BinaryTree")) size = 0; else if(!strcmp(name, "ecere::sys::FileListing")) -size = 3 * 8; +size = 3 * (force32Bits ? 4 : 8); } if(type == 1) { @@ -2217,6 +2221,7 @@ else if(ch >= 'A' && ch <= 'Z') ch -= ('A' - 10); else { +if(endString) *endString = string + c; break; } @@ -2227,6 +2232,7 @@ value += ch; } else { +if(endString) *endString = string + c; break; } @@ -2276,6 +2282,7 @@ else if(ch >= 'A' && ch <= 'Z') ch -= ('A' - 10); else { +if(endString) *endString = string + c; break; } @@ -5010,7 +5017,9 @@ extern int isprint(int c); static void __ecereNameSpace__ecere__com__LoadCOM(struct __ecereNameSpace__ecere__com__Instance * module) { unsigned int force64Bits = ((unsigned int)((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->isGUIApp & 2) ? 0x1 : 0x0; -int pointerSize = force64Bits ? 8 : sizeof(void *); +unsigned int force32Bits = ((unsigned int)((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->isGUIApp & 4) ? 0x1 : 0x0; +unsigned int forceX = ((unsigned int)((struct __ecereNameSpace__ecere__com__Application *)(((char *)((struct __ecereNameSpace__ecere__com__Module *)(((char *)module + 12)))->application + 300)))->isGUIApp & 8) ? 0x1 : 0x0; +int pointerSize = force64Bits ? 8 : (forceX | force32Bits) ? 4 : sizeof(void *); struct __ecereNameSpace__ecere__com__Class * applicationClass; struct __ecereNameSpace__ecere__com__Class * enumClass, * structClass, * boolClass; struct __ecereNameSpace__ecere__com__Class * moduleClass; @@ -5035,7 +5044,7 @@ __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_class", "ece __ecereNameSpace__ecere__com__eClass_AddDataMember(instanceClass, "_refCount", "int", sizeof(int), sizeof(int), 1); } __ecereNameSpace__ecere__com__InitializeDataTypes1(module); -enumClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "enum", (((void *)0)), 0, force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), (((void *)0)), (((void *)0)), module, 4, 1); +enumClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "enum", (((void *)0)), 0, force64Bits ? 40 : force32Bits ? 24 : sizeof(struct __ecereNameSpace__ecere__com__EnumClassData), (((void *)0)), (((void *)0)), module, 4, 1); __ecereNameSpace__ecere__com__eClass_AddClassProperty(enumClass, "enumSize", "int", (((void *)0)), __ecereNameSpace__ecere__com__GetEnumSize)->constant = 0x1; enumClass->type = 1000; (__ecereNameSpace__ecere__com__eSystem_Delete(enumClass->dataTypeString), enumClass->dataTypeString = 0); @@ -5050,16 +5059,16 @@ __ecereNameSpace__ecere__com__InitializeDataTypes(module); boolClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(4, "bool", "uint", 0, 0, (((void *)0)), (((void *)0)), module, 4, 1); __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "true", (unsigned int)0x1); __ecereNameSpace__ecere__com__eEnum_AddFixedValue(boolClass, "false", (unsigned int)0x0); -moduleClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Module", (((void *)0)), force64Bits ? 8 + 8 + 32 + 32 + 32 + 32 + 8 + 8 + 8 + 8 + 8 + 8 + (32 + 8 + 8 + 4 * 32) + (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__Module), 0, (void *)__ecereNameSpace__ecere__com__Module_Constructor, (void *)__ecereNameSpace__ecere__com__Module_Destructor, module, 4, 1); +moduleClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Module", (((void *)0)), force64Bits ? 8 + 32 + 32 + 32 + 32 + 8 + 8 + 8 + 8 + 8 + 4 + 4 + (32 + 8 + 8 + 4 * 32) + (32 + 8 + 8 + 4 * 32) : force32Bits ? 4 + 20 + 20 + 20 + 20 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + (16 + 4 + 4 + 4 * 16) + (16 + 4 + 4 + 4 * 16) : sizeof(struct __ecereNameSpace__ecere__com__Module), 0, (void *)__ecereNameSpace__ecere__com__Module_Constructor, (void *)__ecereNameSpace__ecere__com__Module_Destructor, module, 4, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", (((void *)0)), 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", (((void *)0)), 1); __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Load", "Module(char * name, AccessMode importAccess)", __ecereNameSpace__ecere__com__eModule_Load, 1); __ecereNameSpace__ecere__com__eClass_AddMethod(moduleClass, "Unload", "void(Module module)", __ecereNameSpace__ecere__com__eModule_Unload, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "application", "Application", pointerSize, pointerSize, 1); -__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); -__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); -__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); -__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); +__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "classes", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); +__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "defines", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); +__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "functions", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); +__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "modules", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "prev", "Module", pointerSize, pointerSize, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "next", "Module", pointerSize, pointerSize, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "name", "char *", pointerSize, pointerSize, 1); @@ -5067,19 +5076,19 @@ __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "library", "void __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "Unload", "void *", pointerSize, pointerSize, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(int), 4, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "origImportType", "ImportType", sizeof(int), 4, 1); -__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1); -__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1); +__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : force32Bits ? (16 + 4 + 4 + 4 * 16) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1); +__ecereNameSpace__ecere__com__eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : force32Bits ? (16 + 4 + 4 + 4 * 16) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1); moduleClass->fixed = 0x1; moduleClass->count++; -applicationClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Application", "Module", force64Bits ? (8 + 8 + 8 + 8 + 32 + 8 + 176) : sizeof(struct __ecereNameSpace__ecere__com__Application), 0, (((void *)0)), (void *)__ecereNameSpace__ecere__com__Application_Destructor, module, 4, 1); +applicationClass = __ecereNameSpace__ecere__com__eSystem_RegisterClass(0, "ecere::com::Application", "Module", force64Bits ? (8 + 8 + 4 + 4 + 32 + 8 + 176) : force32Bits ? (4 + 4 + 4 + 4 + 20 + 4 + 88) : sizeof(struct __ecereNameSpace__ecere__com__Application), 0, (((void *)0)), (void *)__ecereNameSpace__ecere__com__Application_Destructor, module, 4, 1); __ecereNameSpace__ecere__com__eClass_AddVirtualMethod(applicationClass, "Main", "void()", (((void *)0)), 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "argv", "char **", pointerSize, pointerSize, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(unsigned int), 4, 1); -__ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", force64Bits ? 32 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); +__ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "allModules", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(struct __ecereNameSpace__ecere__sys__OldList), pointerSize, 1); __ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "parsedCommand", "char *", pointerSize, pointerSize, 1); -__ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1); +__ecereNameSpace__ecere__com__eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4 * 32) : force32Bits ? (16 + 4 + 4 + 4 * 16) : sizeof(struct __ecereNameSpace__ecere__com__NameSpace), pointerSize, 1); applicationClass->fixed = 0x1; applicationClass->count++; __ecereNameSpace__ecere__com__eSystem_RegisterFunction("sin", "double sin(Angle number)", sin, module, 4); diff --git a/compiler/bootstrap/libec/bootstrap/ecdefs.c b/compiler/bootstrap/libec/bootstrap/ecdefs.c index 3593d99..48f26b4 100644 --- a/compiler/bootstrap/libec/bootstrap/ecdefs.c +++ b/compiler/bootstrap/libec/bootstrap/ecdefs.c @@ -1802,6 +1802,11 @@ void SetTargetBits(int bits) targetBits = bits; } +int GetTargetBits() +{ +return targetBits; +} + extern struct __ecereNameSpace__ecere__com__Class * __ecereNameSpace__ecere__com__eSystem_RegisterClass(int type, char * name, char * baseName, int size, int sizeClass, unsigned int (* )(void * ), void (* )(void * ), struct __ecereNameSpace__ecere__com__Instance * module, int declMode, int inheritanceAccess); extern void __ecereNameSpace__ecere__com__eEnum_AddFixedValue(struct __ecereNameSpace__ecere__com__Class * _class, char * string, int value); @@ -2852,6 +2857,7 @@ __ecereNameSpace__ecere__com__eSystem_RegisterFunction("yyerror", "int yyerror(c __ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetHostBits", "int GetHostBits(void)", GetHostBits, module, 1); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetTargetPlatform", "void SetTargetPlatform(ecere::com::Platform platform)", SetTargetPlatform, module, 1); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("SetTargetBits", "void SetTargetBits(int bits)", SetTargetBits, module, 1); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("GetTargetBits", "int GetTargetBits(void)", GetTargetBits, module, 1); } void __ecereUnregisterModule_ecdefs(struct __ecereNameSpace__ecere__com__Instance * module) diff --git a/compiler/libec/src/ecdefs.ec b/compiler/libec/src/ecdefs.ec index f5c4298..b2c2fba 100644 --- a/compiler/libec/src/ecdefs.ec +++ b/compiler/libec/src/ecdefs.ec @@ -1329,7 +1329,11 @@ Platform targetPlatform; public int GetHostBits() { // Default to runtime platform in case we fail to determine host +#if defined(__WIN32__) + int hostBits = 64; // For now 32 bit compiler has 'forced bit depth' +#else int hostBits = (sizeof(uintptr) == 8) ? 64 : 32; +#endif String hostType = getenv("HOSTTYPE"); char host[256]; if(!hostType) @@ -1357,3 +1361,4 @@ public void SetTargetPlatform(Platform platform) { targetPlatform = platform; }; int targetBits; public void SetTargetBits(int bits) { targetBits = bits; }; +public int GetTargetBits() { return targetBits; }; diff --git a/ecere/src/com/instance.ec b/ecere/src/com/instance.ec index be8e453..a8a55b2 100644 --- a/ecere/src/com/instance.ec +++ b/ecere/src/com/instance.ec @@ -414,11 +414,10 @@ public: void * param; // To attach to Compiler TemplateParameter } -/* -public class Module : struct +/* // Module inherits off the Instance class (_vTbl, _class, _refCount) +public class Module { class_no_expansion - Instance inst; Application app; @@ -442,8 +441,6 @@ public class Module : struct public class Application : Module { - Module module; - int argc; char ** argv; int exitCode; @@ -2159,6 +2156,8 @@ public dllexport Class eSystem_RegisterClass(ClassType type, char * name, char * int start = 0, c; NameSpace * nameSpace = null; bool force64Bits = (module.application.isGUIApp & 2) ? true : false; + bool force32Bits = (module.application.isGUIApp & 4) ? true : false; + bool forceX = (module.application.isGUIApp & 8) ? true : false; { nameSpace = (declMode == publicAccess) ? &module.publicNameSpace : &module.privateNameSpace; @@ -2553,12 +2552,13 @@ public dllexport Class eSystem_RegisterClass(ClassType type, char * name, char * } _class.memberID = _class.startMemberID = (base && (type == normalClass || type == noHeadClass || type == structClass)) ? base.memberID : 0; if(type == normalClass || type == noHeadClass) - _class.offset = (base && base.structSize && base.type != systemClass) ? base.structSize : ((type == noHeadClass) ? 0 : (force64Bits ? 24 : sizeof(class Instance))); - if(force64Bits) + _class.offset = (base && base.structSize && base.type != systemClass) ? base.structSize : ((type == noHeadClass) ? 0 : (force64Bits ? 24 : (force32Bits) ? 12 : sizeof(class Instance))); + if(force64Bits || forceX /*force32Bits*/) { // For 64 bit cross-compiling from 32 bit library: if(!strcmp(name, "ecere::com::Class")) size = 0; // 616 else if(!strcmp(name, "ecere::com::ClassProperty")) size = 0; // 80 + else if(!strcmp(name, "ecere::com::NameSpace")) size = 0; // 176 else if(!strcmp(name, "ecere::sys::BufferedFile")) size = 0; else if(!strcmp(name, "ecere::sys::BTNode")) size = 0; else if(!strcmp(name, "ecere::sys::StringBTNode")) size = 0; @@ -2569,7 +2569,7 @@ public dllexport Class eSystem_RegisterClass(ClassType type, char * name, char * else if(!strcmp(name, "ecere::sys::NamedItem")) size = 0; else if(!strcmp(name, "ecere::sys::NamedItem64")) size = 0; else if(!strcmp(name, "ecere::sys::BinaryTree")) size = 0; - else if(!strcmp(name, "ecere::sys::FileListing")) size = 3*8; + else if(!strcmp(name, "ecere::sys::FileListing")) size = 3*(force32Bits ? 4 : 8); } if(type == structClass) { @@ -3003,7 +3003,8 @@ public int64 _strtoi64(char * string, char ** endString, int base) ch -= ('A'- 10); else { - *endString = string + c; + if(endString) + *endString = string + c; // Invalid character break; } @@ -3014,7 +3015,8 @@ public int64 _strtoi64(char * string, char ** endString, int base) } else { - *endString = string + c; + if(endString) + *endString = string + c; // Invalid character break; } @@ -3056,7 +3058,8 @@ public uint64 _strtoui64(char * string, char ** endString, int base) ch -= ('A' - 10); else { - *endString = string + c; + if(endString) + *endString = string + c; // Invalid character break; } @@ -5829,7 +5832,9 @@ public bool LocateModule(char * name, char * fileName) static void LoadCOM(Module module) { bool force64Bits = (module.application.isGUIApp & 2) ? true : false; - int pointerSize = force64Bits ? 8 : sizeof(void *); + bool force32Bits = (module.application.isGUIApp & 4) ? true : false; + bool forceX = (module.application.isGUIApp & 8) ? true : false; + int pointerSize = force64Bits ? 8 : (forceX|force32Bits) ? 4 : sizeof(void *); Class applicationClass; Class enumClass, structClass, boolClass; Class moduleClass; @@ -5861,7 +5866,7 @@ static void LoadCOM(Module module) InitializeDataTypes1(module); // Create Enum class - enumClass = eSystem_RegisterClass(normalClass, "enum", null, 0, force64Bits ? 32 : sizeof(class EnumClassData), null, null, module, baseSystemAccess, publicAccess); + enumClass = eSystem_RegisterClass(normalClass, "enum", null, 0, force64Bits ? 40 : force32Bits ? 24 : sizeof(class EnumClassData), null, null, module, baseSystemAccess, publicAccess); eClass_AddClassProperty(enumClass, "enumSize", "int", null, GetEnumSize).constant = true; enumClass.type = systemClass; @@ -5888,17 +5893,18 @@ static void LoadCOM(Module module) eEnum_AddFixedValue(boolClass, "false", bool::false); // Create Module class - moduleClass = eSystem_RegisterClass(normalClass, "ecere::com::Module", null, force64Bits ? 8 + 8 + 32 + 32 + 32 + 32 + 8 + 8 + 8 + 8 + 8 + 8 + (32 + 8 + 8 + 4*32) + (32 + 8 + 8 + 4*32) - : sizeof(struct Module), 0, (void *)Module_Constructor, (void *)Module_Destructor, module, baseSystemAccess, publicAccess); + moduleClass = eSystem_RegisterClass(normalClass, "ecere::com::Module", null, force64Bits ? 8 + 32 + 32 + 32 + 32 + 8 + 8 + 8 + 8 + 8 + 4 + 4 + (32 + 8 + 8 + 4*32) + (32 + 8 + 8 + 4*32) : + force32Bits ? 4 + 20 + 20 + 20 + 20 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + (16 + 4 + 4 + 4*16) + (16 + 4 + 4 + 4*16) : + sizeof(struct Module), 0, (void *)Module_Constructor, (void *)Module_Destructor, module, baseSystemAccess, publicAccess); eClass_AddVirtualMethod(moduleClass, "OnLoad", "bool()", null, publicAccess); eClass_AddVirtualMethod(moduleClass, "OnUnload", "void()", null, publicAccess); eClass_AddMethod(moduleClass, "Load", "Module(char * name, AccessMode importAccess)", eModule_Load, publicAccess); eClass_AddMethod(moduleClass, "Unload", "void(Module module)", eModule_Unload, publicAccess); eClass_AddDataMember(moduleClass, "application", "Application", pointerSize, pointerSize, publicAccess); - eClass_AddDataMember(moduleClass, "classes", "OldList", force64Bits ? 32 : sizeof(OldList), pointerSize, publicAccess); - eClass_AddDataMember(moduleClass, "defines", "OldList", force64Bits ? 32 : sizeof(OldList), pointerSize, publicAccess); - eClass_AddDataMember(moduleClass, "functions", "OldList", force64Bits ? 32 : sizeof(OldList), pointerSize, publicAccess); - eClass_AddDataMember(moduleClass, "modules", "OldList", force64Bits ? 32 : sizeof(OldList), pointerSize, publicAccess); + eClass_AddDataMember(moduleClass, "classes", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(OldList), pointerSize, publicAccess); + eClass_AddDataMember(moduleClass, "defines", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(OldList), pointerSize, publicAccess); + eClass_AddDataMember(moduleClass, "functions", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(OldList), pointerSize, publicAccess); + eClass_AddDataMember(moduleClass, "modules", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(OldList), pointerSize, publicAccess); eClass_AddDataMember(moduleClass, "prev", "Module", pointerSize, pointerSize, publicAccess); eClass_AddDataMember(moduleClass, "next", "Module", pointerSize, pointerSize, publicAccess); eClass_AddDataMember(moduleClass, "name", "char *", pointerSize, pointerSize, publicAccess); @@ -5906,21 +5912,21 @@ static void LoadCOM(Module module) eClass_AddDataMember(moduleClass, "Unload", "void *", pointerSize, pointerSize, publicAccess); eClass_AddDataMember(moduleClass, "importType", "ImportType", sizeof(ImportType), 4, publicAccess); eClass_AddDataMember(moduleClass, "origImportType", "ImportType", sizeof(ImportType), 4, publicAccess); - eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4*32) : sizeof(NameSpace), pointerSize, publicAccess); - eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4*32) : sizeof(NameSpace), pointerSize, publicAccess); + eClass_AddDataMember(moduleClass, "privateNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4*32) : force32Bits ? (16 + 4 + 4 + 4*16) : sizeof(NameSpace), pointerSize, publicAccess); + eClass_AddDataMember(moduleClass, "publicNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4*32) : force32Bits ? (16 + 4 + 4 + 4*16) : sizeof(NameSpace), pointerSize, publicAccess); moduleClass.fixed = true; moduleClass.count++; // Create Application class - applicationClass = eSystem_RegisterClass(normalClass, "ecere::com::Application", "Module", force64Bits ? (8+8+8+8 + 32 + 8 + 176) : sizeof(struct Application), 0, null, (void *)Application_Destructor, module, baseSystemAccess, publicAccess); + applicationClass = eSystem_RegisterClass(normalClass, "ecere::com::Application", "Module", force64Bits ? (8+8+4+4 + 32 + 8 + 176) : force32Bits ? (4+4+4+4 + 20 + 4 + 88) : sizeof(struct Application), 0, null, (void *)Application_Destructor, module, baseSystemAccess, publicAccess); eClass_AddVirtualMethod(applicationClass, "Main", "void()", null, publicAccess); eClass_AddDataMember(applicationClass, "argc", "int", sizeof(int), 4, publicAccess); eClass_AddDataMember(applicationClass, "argv", "char **", pointerSize, pointerSize, publicAccess); eClass_AddDataMember(applicationClass, "exitCode", "int", sizeof(int), 4, publicAccess); eClass_AddDataMember(applicationClass, "isGUIApp", "bool", sizeof(bool), 4, publicAccess); - eClass_AddDataMember(applicationClass, "allModules", "OldList", force64Bits ? 32: sizeof(OldList), pointerSize, publicAccess); + eClass_AddDataMember(applicationClass, "allModules", "OldList", force64Bits ? 32 : force32Bits ? 20 : sizeof(OldList), pointerSize, publicAccess); eClass_AddDataMember(applicationClass, "parsedCommand", "char *", pointerSize, pointerSize, publicAccess); - eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4*32) : sizeof(NameSpace), pointerSize, publicAccess); + eClass_AddDataMember(applicationClass, "systemNameSpace", "NameSpace", force64Bits ? (32 + 8 + 8 + 4*32) : force32Bits ? (16 + 4 + 4 + 4*16) : sizeof(NameSpace), pointerSize, publicAccess); applicationClass.fixed = true; applicationClass.count++; diff --git a/ide/src/designer/CodeEditor.ec b/ide/src/designer/CodeEditor.ec index a3fe2a3..f3bef95 100644 --- a/ide/src/designer/CodeEditor.ec +++ b/ide/src/designer/CodeEditor.ec @@ -2671,7 +2671,7 @@ class CodeEditor : Window SetTargetBits(compiler.supportsBitDepth ? 32 : GetHostBits()); delete compiler; } - this.privateModule = __ecere_COM_Initialize(false, 1, null); + this.privateModule = __ecere_COM_Initialize(false | (GetTargetBits() == 64 ? 2 : 8 /*4*/), 1, null); SetPrivateModule(privateModule); -- 1.8.3.1