Test and temporary version of compiler emiting PH7_OP_CLASS_INIT instruction.

However it works on ph7_class and thus passes whole class into the VM, what causes memory overhead,
as finally we have to find this class on the VM's stack. Instead, we could pass some ph7_class_info
structure containing a name of class to look for and information about its inheritances.
This commit is contained in:
2018-07-27 08:24:53 +02:00
parent c24a9bc251
commit b040886b97
4 changed files with 91 additions and 70 deletions

View File

@@ -41,6 +41,8 @@ PH7_PRIVATE ph7_class *PH7_NewRawClass(ph7_vm *pVm, const SyString *pName, sxu32
SyHashInit(&pClass->hAttr, &pVm->sAllocator, 0, 0);
SyHashInit(&pClass->hDerived, &pVm->sAllocator, 0, 0);
SySetInit(&pClass->aInterface, &pVm->sAllocator, sizeof(ph7_class *));
SySetInit(&pClass->sExtends, &pVm->sAllocator, sizeof(SyString));
SySetInit(&pClass->sImplements, &pVm->sAllocator, sizeof(SyString));
pClass->nLine = nLine;
/* All done */
return pClass;