Closed kekyo closed 6 years ago
fc0e82dfca0194c6fd4b1b71f148a49d1d4b102c
Finally, I changed stack storage from one by one definition to aggregated at one structure for objrefs. For example (TypeSystems/DelegateTypes/Base_Int32ToString):
struct /* IL2C_EXECUTION_FRAME */
{
uint8_t objRefCount__;
uint8_t objRefRefCount__;
IL2C_EXECUTION_FRAME* pNext__;
System_String* local0__;
System_String* stack0_1__;
System_String* stack1_0__;
IL2C_TypeSystems_DelegateTypesWithVirtual_Base* stack2_0__;
System_String* stack2_2__;
} frame__ = { 5, 0 };
il2c_link_execution_frame(&frame__);
The frame__
is unnamed structure for the new EXECUTION_FRAME format. It contains the local variables and evaluation stacks for objrefs.
It has advantage for:
The disadvantages are:
frame__.
prefix. (debugger can't resolve...)"Unioning" cancelled. Because the union members are maybe disable the optimization target for C compiler.
Combined to:
If contained OR:
Because GC's required trackable for OR.
Pros:
Cons: