public void emit(IRModuleBody method) { String name = method.getName(); if (name.indexOf("DUMMY_MC") != -1) { name = "METACLASS"; } name = emitScope(method, name, 0); // push a method handle for binding purposes jvm.method().pushHandle(jvm.clsData().clsName, name, method.getStaticScope().getRequiredArgs()); }
public void emit(IRModuleBody method) { String name = method.getName(); if (name.indexOf("DUMMY_MC") != -1) { name = "METACLASS"; } name = emitScope(method, name, 0); // push a method handle for binding purposes jvm.method().pushHandle(jvm.clsData().clsName, name, method.getStaticScope().getRequiredArgs()); }
public void emit(IRMethod method) { String name = emitScope(method, method.getName(), method.getCallArgs().length); // push a method handle for binding purposes jvm.method().pushHandle(jvm.clsData().clsName, name, method.getStaticScope().getRequiredArgs()); }
public void emit(IRScriptBody script) { String clsName = jvm.scriptToClass(script.getName()); jvm.pushscript(clsName, script.getFileName()); emitScope(script, "__script__", 0); jvm.cls().visitEnd(); jvm.popclass(); }
public void emit(IRMethod method) { String name = emitScope(method, method.getName(), method.getCallArgs().length); // push a method handle for binding purposes jvm.method().pushHandle(jvm.clsData().clsName, name, method.getStaticScope().getRequiredArgs()); }
public void emit(IRScriptBody script) { String clsName = jvm.scriptToClass(script.getName()); jvm.pushscript(clsName, script.getFileName()); emitScope(script, "__script__", 0); jvm.cls().visitEnd(); jvm.popclass(); }
protected Handle emitClosure(IRClosure closure, boolean print) { /* Compile the closure like a method */ String name = JavaNameMangler.encodeScopeForBacktrace(closure) + '$' + methodIndex++; emitScope(closure, name, CLOSURE_SIGNATURE, false, print); return new Handle( Opcodes.H_INVOKESTATIC, jvm.clsData().clsName, name, sig(CLOSURE_SIGNATURE.type().returnType(), CLOSURE_SIGNATURE.type().parameterArray()), false); }
protected Handle emitClosure(IRClosure closure, boolean print) { /* Compile the closure like a method */ String name = JavaNameMangler.encodeScopeForBacktrace(closure) + '$' + methodIndex++; emitScope(closure, name, CLOSURE_SIGNATURE, false, print); return new Handle( Opcodes.H_INVOKESTATIC, jvm.clsData().clsName, name, sig(CLOSURE_SIGNATURE.type().returnType(), CLOSURE_SIGNATURE.type().parameterArray()), false); }
protected void emitScriptBody(IRScriptBody script) { // Note: no index attached because there should be at most one script body per .class String name = JavaNameMangler.encodeScopeForBacktrace(script); String clsName = jvm.scriptToClass(script.getFile()); jvm.pushscript(clsName, script.getFile()); emitScope(script, name, signatureFor(script, false), false, true); jvm.cls().visitEnd(); jvm.popclass(); }
protected Handle emitModuleBody(IRModuleBody method) { String name = JavaNameMangler.encodeScopeForBacktrace(method) + '$' + methodIndex++; Signature signature = signatureFor(method, false); emitScope(method, name, signature, false, true); return new Handle( Opcodes.H_INVOKESTATIC, jvm.clsData().clsName, name, sig(signature.type().returnType(), signature.type().parameterArray()), false); }
protected Handle emitModuleBody(IRModuleBody method) { String name = JavaNameMangler.encodeScopeForBacktrace(method) + '$' + methodIndex++; Signature signature = signatureFor(method, false); emitScope(method, name, signature, false, true); return new Handle( Opcodes.H_INVOKESTATIC, jvm.clsData().clsName, name, sig(signature.type().returnType(), signature.type().parameterArray()), false); }
protected void emitScriptBody(IRScriptBody script) { // Note: no index attached because there should be at most one script body per .class String name = JavaNameMangler.encodeScopeForBacktrace(script); String clsName = jvm.scriptToClass(script.getFile()); jvm.pushscript(clsName, script.getFile()); emitScope(script, name, signatureFor(script, false), false, true); jvm.cls().visitEnd(); jvm.popclass(); }
protected void emitBlockJIT(IRClosure closure, JVMVisitorMethodContext context) { String clsName = jvm.scriptToClass(closure.getFile()); String name = JavaNameMangler.encodeScopeForBacktrace(closure) + '$' + methodIndex++; jvm.pushscript(clsName, closure.getFile()); emitScope(closure, name, CLOSURE_SIGNATURE, false, true); context.setBaseName(name); context.setVariableName(name); jvm.cls().visitEnd(); jvm.popclass(); }
private void emitWithSignatures(IRMethod method, JVMVisitorMethodContext context, String name) { context.setBaseName(name); Signature specificSig = signatureFor(method, true); if (specificSig == null) { // only varargs, so use name as is context.setVariableName(name); Signature signature = signatureFor(method, false); emitScope(method, name, signature, false, true); context.addNativeSignature(-1, signature.type()); } else { String specificName = name; context.setSpecificName(specificName); emitScope(method, specificName, specificSig, true, true); context.addNativeSignature(method.getStaticScope().getSignature().required(), specificSig.type()); // specific arity path, so mangle the dummy varargs wrapper String variableName = name + JavaNameMangler.VARARGS_MARKER; context.setVariableName(variableName); emitVarargsMethodWrapper(method, variableName, specificName, METHOD_SIGNATURE_VARARGS, specificSig); context.addNativeSignature(-1, METHOD_SIGNATURE_VARARGS.type()); } }
protected void emitBlockJIT(IRClosure closure, JVMVisitorMethodContext context) { String clsName = jvm.scriptToClass(closure.getFile()); String name = JavaNameMangler.encodeScopeForBacktrace(closure) + '$' + methodIndex++; jvm.pushscript(clsName, closure.getFile()); emitScope(closure, name, CLOSURE_SIGNATURE, false, true); context.setBaseName(name); context.setVariableName(name); jvm.cls().visitEnd(); jvm.popclass(); }
private void emitWithSignatures(IRMethod method, JVMVisitorMethodContext context, String name) { context.setBaseName(name); Signature specificSig = signatureFor(method, true); if (specificSig == null) { // only varargs, so use name as is context.setVariableName(name); Signature signature = signatureFor(method, false); emitScope(method, name, signature, false, true); context.addNativeSignature(-1, signature.type()); } else { String specificName = name; context.setSpecificName(specificName); emitScope(method, specificName, specificSig, true, true); context.addNativeSignature(method.getStaticScope().getSignature().required(), specificSig.type()); // specific arity path, so mangle the dummy varargs wrapper String variableName = name + JavaNameMangler.VARARGS_MARKER; context.setVariableName(variableName); emitVarargsMethodWrapper(method, variableName, specificName, METHOD_SIGNATURE_VARARGS, specificSig); context.addNativeSignature(-1, METHOD_SIGNATURE_VARARGS.type()); } }
protected Handle emitModuleBodyJIT(IRModuleBody method) { String name = JavaNameMangler.encodeScopeForBacktrace(method) + '$' + methodIndex++; String clsName = jvm.scriptToClass(method.getFile()); jvm.pushscript(clsName, method.getFile()); Signature signature = signatureFor(method, false); emitScope(method, name, signature, false, true); Handle handle = new Handle( Opcodes.H_INVOKESTATIC, jvm.clsData().clsName, name, sig(signature.type().returnType(), signature.type().parameterArray()), false); jvm.cls().visitEnd(); jvm.popclass(); return handle; }
protected Handle emitModuleBodyJIT(IRModuleBody method) { String name = JavaNameMangler.encodeScopeForBacktrace(method) + '$' + methodIndex++; String clsName = jvm.scriptToClass(method.getFile()); jvm.pushscript(clsName, method.getFile()); Signature signature = signatureFor(method, false); emitScope(method, name, signature, false, true); Handle handle = new Handle( Opcodes.H_INVOKESTATIC, jvm.clsData().clsName, name, sig(signature.type().returnType(), signature.type().parameterArray()), false); jvm.cls().visitEnd(); jvm.popclass(); return handle; }