| 46 | } |
| 47 | |
| 48 | void DebugInfoHelper::appendLocalVariables ( FuncInfo * info, ExpressionPtr body ) { |
| 49 | CollectLocalVariables lv; |
| 50 | body->visit(lv); |
| 51 | info->localCount = uint32_t(lv.locals.size()); |
| 52 | info->locals = (LocalVariableInfo **) debugInfo->allocate(sizeof(VarInfo *) * info->localCount); |
| 53 | uint32_t i = 0; |
| 54 | for ( auto & var_vis : lv.locals ) { |
| 55 | auto var = get<0>(var_vis); |
| 56 | LocalVariableInfo * lvar = (LocalVariableInfo *) debugInfo->allocate(sizeof(LocalVariableInfo)); |
| 57 | info->locals[i] = lvar; |
| 58 | makeTypeInfo(lvar, var->type); |
| 59 | if ( get<2>(var_vis) ) lvar->flags |= TypeInfo::flag_ref; |
| 60 | lvar->name = debugInfo->allocateCachedName(var->name); |
| 61 | lvar->stackTop = var->stackTop; |
| 62 | lvar->visibility = get<1>(var_vis); |
| 63 | lvar->localFlags = 0; |
| 64 | lvar->cmres = var->aliasCMRES; |
| 65 | i ++ ; |
| 66 | } |
| 67 | } |
| 68 | |
| 69 | EnumInfo * DebugInfoHelper::makeEnumDebugInfo ( const Enumeration & en ) { |
| 70 | auto mangledName = en.getMangledName(); |
no test coverage detected