From 01c210984e3ae54a72becae57165f6357ea65b27 Mon Sep 17 00:00:00 2001 From: belliash Date: Wed, 3 Apr 2019 13:57:29 +0200 Subject: [PATCH] Further optimisations. --- engine/vm.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/engine/vm.c b/engine/vm.c index 624539d..f3e84ca 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -636,14 +636,14 @@ static sxi32 VmMountUserClass( if(pMemObj == 0 || pResult == 0) { PH7_VmMemoryError(&(*pVm)); } + MemObjSetType(pMemObj, pAttr->nType); if(SySetUsed(&pAttr->aByteCode) > 0) { /* Initialize attribute default value (any complex expression) */ VmLocalExec(&(*pVm), &pAttr->aByteCode, pResult); - } - MemObjSetType(pMemObj, pAttr->nType); - rc = PH7_MemObjSafeStore(pResult, pMemObj); - if(rc != SXRET_OK) { - PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName); + rc = PH7_MemObjSafeStore(pResult, pMemObj); + if(rc != SXRET_OK) { + PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName); + } } /* Free up memory */ PH7_MemObjRelease(pResult); @@ -704,14 +704,14 @@ PH7_PRIVATE sxi32 PH7_VmCreateClassInstanceFrame( SyMemBackendPoolFree(&pVm->sAllocator, pVmAttr); return SXERR_MEM; } + MemObjSetType(pMemObj, pAttr->nType); if(SySetUsed(&pAttr->aByteCode) > 0) { /* Initialize attribute default value (any complex expression) */ VmLocalExec(&(*pVm), &pAttr->aByteCode, pResult); - } - MemObjSetType(pMemObj, pAttr->nType); - rc = PH7_MemObjSafeStore(pResult, pMemObj); - if(rc != SXRET_OK) { - PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName); + rc = PH7_MemObjSafeStore(pResult, pMemObj); + if(rc != SXRET_OK) { + PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Cannot assign a value of incompatible type to variable '%z::$%z'", &pClass->sName, &pAttr->sName); + } } /* Free up memory */ PH7_MemObjRelease(pResult);