jvm.method().storeLocal(index);
}
@Override
public void DefineClassInstr(DefineClassInstr defineclassinstr) {
IRClassBody newIRClassBody = defineclassinstr.getNewIRClassBody();
StaticScope scope = newIRClassBody.getStaticScope();
if (scope.getRequiredArgs() > 3 || scope.getRestArg() >= 0 || scope.getOptionalArgs() != 0) {
throw new RuntimeException("can't compile variable method: " + this);
}
String scopeString = RuntimeHelpers.encodeScope(scope);
IRBytecodeAdapter m = jvm.method();
SkinnyMethodAdapter a = m.adapter;
// new CompiledIRMethod
a.newobj(p(CompiledIRMethod.class));
a.dup();
// emit method body and get handle
emit(newIRClassBody); // handle
// add'l args for CompiledIRMethod constructor
a.ldc(newIRClassBody.getName());
a.ldc(newIRClassBody.getFileName());
a.ldc(newIRClassBody.getLineNumber());
// construct class with RuntimeHelpers.newClassForIR
a.aload(0); // ThreadContext
a.ldc(newIRClassBody.getName()); // class name
m.loadLocal(2); // self
// create class
m.loadLocal(0);
visit(defineclassinstr.getContainer());