package nebula.lang;
import java.util.HashMap;
import java.util.Map;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.MethodVisitor;
import com.google.common.collect.ImmutableMap;
public class MethodAsmCompiler extends AsmCompiler {
static Map<String, Integer> locals = new HashMap<String, Integer>(ImmutableMap.of("nop", 0, "context", 1, "repos", 2, "this", 3));
public MethodAsmCompiler(ClassWriter cw, MethodVisitor mv) {
super(cw, mv);
}
private int getLocal(String name) {
Integer i = locals.get(name);
if (i != null) {
return i;
} else {
locals.put(name, locals.size());
return locals.get(name);
}
}
@Override
public void varRefer(Var var) {
super.varRefer(getLocal(var.name));
}
}