void readVarInfo(const AstVar* var, uint16_t& localId, uint16_t& localContext, Context* ctx) { VarInfo* info = getInfo<VarInfo>(var); uint16_t varFunctionId = info->functionId(); uint16_t curFunctionId = ctx->currentFunctionId(); localId = info->localId(); localContext = 0; if (varFunctionId != curFunctionId) { InterpreterFunction* varFunction = ctx->functionById(varFunctionId); InterpreterFunction* curFunction = ctx->functionById(curFunctionId); int32_t varFunctionDeep = varFunction->deepness(); int32_t curFunctionDeep = curFunction->deepness(); // var function deepness always >= current function deepness localContext = static_cast<uint16_t>(curFunctionDeep - varFunctionDeep); } }