int SearchFunctionLocalName(GenerateFunction func, string name) { var block = func.current_block; while (block != null) { LocalNameInfo name_info = null; if (block.names.TryGetValue(name, out name_info)) { return(name_info.register); } else { block = block.parent; } } return(-1); }
void InsertName(string name, int register) { var f = GetCurrentFunction(); int begin_pc = f.OpCodeSize(); var names = _current_func.current_block.names; LocalNameInfo name_info = null; if (names.TryGetValue(name, out name_info)) { // add old one to function f.AddLocalVar(name, name_info.register, name_info.begin_pc, begin_pc); // replace old one names[name] = new LocalNameInfo(register, begin_pc); } else { names.Add(name, new LocalNameInfo(register, begin_pc)); } }