From 201dc856e23448d437659871504693c4ad564e13 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Fri, 24 Apr 2015 02:26:04 -0400 Subject: [PATCH] compiler/bootstrap: updated --- compiler/bootstrap/ecc/bootstrap/ecc.c | 2 +- compiler/bootstrap/ecere/bootstrap/Container.c | 96 ++++++++++++++---- compiler/bootstrap/ecere/bootstrap/Map.c | 134 +++++++------------------ compiler/bootstrap/ecere/bootstrap/instance.c | 14 +++ 4 files changed, 124 insertions(+), 122 deletions(-) diff --git a/compiler/bootstrap/ecc/bootstrap/ecc.c b/compiler/bootstrap/ecc/bootstrap/ecc.c index 227b563..08a82b0 100644 --- a/compiler/bootstrap/ecc/bootstrap/ecc.c +++ b/compiler/bootstrap/ecc/bootstrap/ecc.c @@ -639,7 +639,7 @@ char * dataTypeString; struct Type * dataType; void * symbol; char * fullName; -char __ecere_padding[36]; +char __ecere_padding[40]; } ecere_gcc_struct; extern struct __ecereNameSpace__ecere__com__Instance * __ecereNameSpace__ecere__com__eModule_LoadStrict(struct __ecereNameSpace__ecere__com__Instance * fromModule, const char * name, int importAccess); diff --git a/compiler/bootstrap/ecere/bootstrap/Container.c b/compiler/bootstrap/ecere/bootstrap/Container.c index ebd341e..23019cf 100644 --- a/compiler/bootstrap/ecere/bootstrap/Container.c +++ b/compiler/bootstrap/ecere/bootstrap/Container.c @@ -660,6 +660,7 @@ __internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; void __ecereProp___ecereNameSpace__ecere__com__Container_Set_copySrc(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value) { +if(value) (__extension__ ({ void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__Instance * source); @@ -818,62 +819,112 @@ if(this && !b) return 1; if(b && !this) return -1; -if(((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +if((__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount])(this) > ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (int)1; +})) > (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = b; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount])(b)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(b) : (int)1; +}))) return 1; -if(((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +if((__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount])(this) < ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (int)1; +})) < (__extension__ ({ +int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = b; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount])(b)) +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); +__internal_VirtualMethod ? __internal_VirtualMethod(b) : (int)1; +}))) return -1; -ia = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +ia = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(this); -ib = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(this) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +ib = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = b; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst])(b); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetFirst]); +__internal_VirtualMethod ? __internal_VirtualMethod(b) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); while(ia && ib) { -uint64 dataA = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 dataA = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, ia); -uint64 dataB = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ia) : (uint64)1; +})); +uint64 dataB = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = b; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(b, ib); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(b, ib) : (uint64)1; +})); int r = onCompare(Dclass, byRef ? ((char *)&dataA + __ENDIAN_PAD(class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)) : (const void *)(uintptr_t)dataA, byRef ? ((char *)&dataB + __ENDIAN_PAD(class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)) : (const void *)(uintptr_t)dataB); if(r) return r; -ia = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +ia = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(this, ia); -ib = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, ia) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); +ib = (__extension__ ({ +struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((struct __ecereNameSpace__ecere__com__IteratorPointer * (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = b; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext])(b, ib); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetNext]); +__internal_VirtualMethod ? __internal_VirtualMethod(b, ib) : (struct __ecereNameSpace__ecere__com__IteratorPointer *)1; +})); } if(ia) return 1; @@ -1116,7 +1167,7 @@ __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpa })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); __internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; })); -int result = ((int (*)(void *, const void *, const void *))(void *)Dclass->_vTbl[__ecereVMethodID_class_OnCompare])(Dclass, ((char *)&value + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)), ((char *)&data + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize))); +int result = onCompare(Dclass, ((char *)&value + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize)), ((char *)&data + __ENDIAN_PAD(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[2].__anon1.__anon1.dataTypeClass->typeSize))); if(!result) return i; @@ -1154,7 +1205,7 @@ __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpa })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); __internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (uint64)1; })); -int result = ((int (*)(void *, const void *, const void *))(void *)Dclass->_vTbl[__ecereVMethodID_class_OnCompare])(Dclass, (const void *)(uintptr_t)value, (const void *)(uintptr_t)data); +int result = onCompare(Dclass, (const void *)(uintptr_t)value, (const void *)(uintptr_t)data); if(!result) return i; @@ -1191,7 +1242,7 @@ __internal_VirtualMethod ? __internal_VirtualMethod(this, i) : (void)1; void __ecereMethod___ecereNameSpace__ecere__com__Container_OnSerialize(struct __ecereNameSpace__ecere__com__Class * class, struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * channel) { -unsigned int count = (__extension__ ({ +unsigned int count = (struct __ecereNameSpace__ecere__com__Instance *)this ? (__extension__ ({ int (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); __internal_VirtualMethod = ((int (*)(struct __ecereNameSpace__ecere__com__Instance *))__extension__ ({ @@ -1200,12 +1251,13 @@ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : class->_vTbl; })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetCount]); __internal_VirtualMethod ? __internal_VirtualMethod(this) : (int)1; -})); +})) : 0; struct __ecereNameSpace__ecere__com__IteratorPointer * i; struct __ecereNameSpace__ecere__com__Class * Dclass = class->templateArgs[2].__anon1.__anon1.dataTypeClass; unsigned int isNormalClass = (Dclass->type == 0) && Dclass->structSize; __ecereMethod___ecereNameSpace__ecere__com__IOChannel_Put(channel, __ecereClass_uint, (void *)&count); +if((struct __ecereNameSpace__ecere__com__Instance *)this) for(i = (__extension__ ({ struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); diff --git a/compiler/bootstrap/ecere/bootstrap/Map.c b/compiler/bootstrap/ecere/bootstrap/Map.c index cd341e3..12d2626 100644 --- a/compiler/bootstrap/ecere/bootstrap/Map.c +++ b/compiler/bootstrap/ecere/bootstrap/Map.c @@ -640,28 +640,14 @@ return 1; void __ecereMethod___ecereNameSpace__ecere__com__Map_FreeKey(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__MapNode * node) { -uint64 value = (__extension__ ({ -uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); - -__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ -struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; - -__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); -__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (uint64)1; -})); - -(((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(value)))), value = 0); -(__extension__ ({ -void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); - -__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ -struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; +if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->type == 1) +{ +struct __ecereNameSpace__ecere__com__Class * Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass; -__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); -__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (void)1; -})); +((void (*)(void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnFree])(Tclass, (((unsigned char *)&node->key) + __ENDIAN_PAD(sizeof(void *)))); +} +else +(((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(__ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(node))))), __ecereProp___ecereNameSpace__ecere__com__MapNode_Set_key(node, 0)); } void __ecereProp___ecereNameSpace__ecere__com__Map_Set_mapSrc(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * value) @@ -678,7 +664,7 @@ __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpa })[__ecereVMethodID___ecereNameSpace__ecere__com__Container_RemoveAll]); __internal_VirtualMethod ? __internal_VirtualMethod(this) : (void)1; })); -if(__ecereNameSpace__ecere__com__eClass_IsDerived(((struct __ecereNameSpace__ecere__com__Instance *)(char *)value)->_class, __ecereClass___ecereNameSpace__ecere__com__Map)) +if(value && __ecereNameSpace__ecere__com__eClass_IsDerived(((struct __ecereNameSpace__ecere__com__Instance *)(char *)value)->_class, __ecereClass___ecereNameSpace__ecere__com__Map)) { for(i = (__extension__ ({ struct __ecereNameSpace__ecere__com__IteratorPointer * (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *); @@ -838,76 +824,6 @@ return (((void *)0)); } } -void __ecereMethod___ecereNameSpace__ecere__com__Map_Remove(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__MapNode * node) -{ -(__extension__ ({ -void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); - -__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); -__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (void)1; -})); -if(((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->type == 1) -{ -struct __ecereNameSpace__ecere__com__Class * Tclass = ((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass; - -((void (*)(void *, void *))(void *)Tclass->_vTbl[__ecereVMethodID_class_OnFree])(Tclass, (((unsigned char *)&node->key) + __ENDIAN_PAD(sizeof(void *)))); -} -else -(((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[5].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(__ecereProp___ecereNameSpace__ecere__com__MapNode_Get_key(node))))), __ecereProp___ecereNameSpace__ecere__com__MapNode_Set_key(node, 0)); -((node ? __extension__ ({ -void * __ecerePtrToDelete = (node); - -__ecereClass___ecereNameSpace__ecere__com__MapNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__MapNode->Destructor((void *)__ecerePtrToDelete) : 0, __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor((void *)__ecerePtrToDelete) : 0, __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor ? __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete); -}) : 0), node = 0); -} - -void __ecereMethod___ecereNameSpace__ecere__com__Map_Free(struct __ecereNameSpace__ecere__com__Instance * this) -{ -struct __ecereNameSpace__ecere__com__MapNode * node = (void *)(((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)this + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->root); - -while(node) -{ -if(node->left) -{ -struct __ecereNameSpace__ecere__com__MapNode * left = node->left; - -node->left = (((void *)0)); -node = left; -} -else if(node->right) -{ -struct __ecereNameSpace__ecere__com__MapNode * right = node->right; - -node->right = (((void *)0)); -node = right; -} -else -{ -struct __ecereNameSpace__ecere__com__MapNode * parent = node->parent; -uint64 value = (__extension__ ({ -uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); - -__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ -struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; - -__internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); -__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (uint64)1; -})); - -(((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(value)))), value = 0); -((node ? __extension__ ({ -void * __ecerePtrToDelete = (node); - -__ecereClass___ecereNameSpace__ecere__com__MapNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__MapNode->Destructor((void *)__ecerePtrToDelete) : 0, __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor ? __ecereClass___ecereNameSpace__ecere__com__AVLNode->Destructor((void *)__ecerePtrToDelete) : 0, __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor ? __ecereClass___ecereNameSpace__ecere__com__IteratorPointer->Destructor((void *)__ecerePtrToDelete) : 0, __ecereNameSpace__ecere__com__eSystem_Delete(__ecerePtrToDelete); -}) : 0), node = 0); -node = parent; -} -} -((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)this + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->root = (((void *)0)); -((struct __ecereNameSpace__ecere__com__CustomAVLTree *)(((char *)this + 0 + sizeof(struct __ecereNameSpace__ecere__com__Instance))))->count = 0; -} - void __ecereMethod___ecereNameSpace__ecere__com__Map_Copy(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__Instance * source) { struct __ecereNameSpace__ecere__com__IteratorPointer * i; @@ -1143,7 +1059,12 @@ node = parent; void __ecereMethod___ecereNameSpace__ecere__com__Map_Remove(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__MapNode * node) { -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, (void *)(node)); +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__ecereClass___ecereNameSpace__ecere__com__CustomAVLTree->_vTbl[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (void)1; +})); __ecereMethod___ecereNameSpace__ecere__com__Map_FreeKey(this, node); ((node ? __extension__ ({ void * __ecerePtrToDelete = (node); @@ -1175,11 +1096,16 @@ node = right; else { struct __ecereNameSpace__ecere__com__MapNode * parent = node->parent; -uint64 value = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 value = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, (void *)(node)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (uint64)1; +})); (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(value)))), value = 0); __ecereMethod___ecereNameSpace__ecere__com__Map_FreeKey(this, node); @@ -1197,19 +1123,29 @@ node = parent; void __ecereMethod___ecereNameSpace__ecere__com__Map_Delete(struct __ecereNameSpace__ecere__com__Instance * this, struct __ecereNameSpace__ecere__com__MapNode * node) { -uint64 value = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ +uint64 value = (__extension__ ({ +uint64 (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer); + +__internal_VirtualMethod = ((uint64 (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * pointer))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData])(this, (void *)(node)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_GetData]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (uint64)1; +})); (((void (* )(void * _class, void * data))((struct __ecereNameSpace__ecere__com__Instance *)(char *)this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass->_vTbl[__ecereVMethodID_class_OnFree])(((struct __ecereNameSpace__ecere__com__Instance * )(char * )this)->_class->templateArgs[6].__anon1.__anon1.dataTypeClass, ((void * )((uintptr_t)(value)))), value = 0); __ecereMethod___ecereNameSpace__ecere__com__Map_FreeKey(this, node); -((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ +(__extension__ ({ +void (* __internal_VirtualMethod)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it); + +__internal_VirtualMethod = ((void (*)(struct __ecereNameSpace__ecere__com__Instance *, struct __ecereNameSpace__ecere__com__IteratorPointer * it))__extension__ ({ struct __ecereNameSpace__ecere__com__Instance * __internal_ClassInst = this; __internal_ClassInst ? __internal_ClassInst->_vTbl : __ecereClass___ecereNameSpace__ecere__com__Map->_vTbl; -})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove])(this, (void *)(node)); +})[__ecereVMethodID___ecereNameSpace__ecere__com__Container_Remove]); +__internal_VirtualMethod ? __internal_VirtualMethod(this, (void *)(node)) : (void)1; +})); } void __ecereRegisterModule_Map(struct __ecereNameSpace__ecere__com__Instance * module) diff --git a/compiler/bootstrap/ecere/bootstrap/instance.c b/compiler/bootstrap/ecere/bootstrap/instance.c index fbf33eb..bba5923 100644 --- a/compiler/bootstrap/ecere/bootstrap/instance.c +++ b/compiler/bootstrap/ecere/bootstrap/instance.c @@ -170,6 +170,8 @@ break; current = current * 3 / 2; if(current == 1) current = 2; +if(current & 7) +current += 8 - (current & 7); } return pos; } @@ -184,6 +186,8 @@ for(pos = 0; pos < number; pos++) current = current * 3 / 2; if(current == 1) current = 2; +if(current & 7) +current += 8 - (current & 7); } return (unsigned int)current; } @@ -200,6 +204,8 @@ return (unsigned int)current; current = current * 3 / 2; if(current == 1) current = 2; +if(current & 7) +current += 8 - (current & 7); } return (unsigned int)current; } @@ -582,6 +588,10 @@ byteDest[d] = 0; return d; } +void __ecereNameSpace__ecere__com__queryMemInfo(char * string) +{ +} + struct __ecereNameSpace__ecere__sys__OldList { void * first; @@ -3247,7 +3257,10 @@ else if(!pointerAlignment && alignment >= 8) _class->pointerAlignment = 0; _class->structAlignment = (__simpleStruct0 = _class->structAlignment, (__simpleStruct0 > alignment) ? __simpleStruct0 : alignment); if(_class->offset % alignment) +{ +_class->structSize += alignment - (_class->offset % alignment); _class->offset += alignment - (_class->offset % alignment); +} if(_class->memberOffset % alignment) _class->memberOffset += alignment - (_class->memberOffset % alignment); } @@ -6867,5 +6880,6 @@ __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8GetChar" __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16Buffer", "int ecere::sys::UTF8toUTF16Buffer(const char * source, uint16 * dest, int max)", __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF32toUTF8Len", "int ecere::sys::UTF32toUTF8Len(const unichar * source, int count, char * dest, int max)", __ecereNameSpace__ecere__sys__UTF32toUTF8Len, module, 4); __ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::sys::UTF8toUTF16", "uint16 * ecere::sys::UTF8toUTF16(const char * source, int * wordCount)", __ecereNameSpace__ecere__sys__UTF8toUTF16, module, 4); +__ecereNameSpace__ecere__com__eSystem_RegisterFunction("ecere::com::queryMemInfo", "void ecere::com::queryMemInfo(char * string)", __ecereNameSpace__ecere__com__queryMemInfo, module, 4); } -- 1.8.3.1