public Class defineFromBytecode(IRScope scope, byte[] code, ClassDefiningClassLoader jrubyClassLoader) { file = scope.getFile(); lastLine = -1; Class result = jrubyClassLoader.defineClass(c(JVM.scriptToClass(file)), code); for (Map.Entry<String, IRScope> entry : scopeMap.entrySet()) { try { result.getField(entry.getKey()).set(null, entry.getValue()); } catch (Exception e) { throw new NotCompilableException(e); } } return result; }
public Class defineFromBytecode(IRScope scope, byte[] code, ClassDefiningClassLoader jrubyClassLoader) { file = scope.getFile(); lastLine = -1; Class result = jrubyClassLoader.defineClass(c(JVM.scriptToClass(file)), code); for (Map.Entry<String, IRScope> entry : scopeMap.entrySet()) { try { result.getField(entry.getKey()).set(null, entry.getValue()); } catch (Exception e) { throw new NotCompilableException(e); } } return result; }
public static Class compile(Ruby ruby, IRScope scope, JRubyClassLoader jrubyClassLoader) { // run compiler JVMVisitor target = new JVMVisitor(); target.codegen(scope); // try { // FileOutputStream fos = new FileOutputStream("tmp.class"); // fos.write(target.code()); // fos.close(); // } catch (Exception e) { // e.printStackTrace(); // } return jrubyClassLoader.defineClass(JVM.scriptToClass(scope.getName()), target.code()); }
public static Class compile(Ruby ruby, IRScope scope, JRubyClassLoader jrubyClassLoader) { // run compiler JVMVisitor target = new JVMVisitor(); target.codegen(scope); // try { // FileOutputStream fos = new FileOutputStream("tmp.class"); // fos.write(target.code()); // fos.close(); // } catch (Exception e) { // e.printStackTrace(); // } return jrubyClassLoader.defineClass(JVM.scriptToClass(scope.getName()), target.code()); }
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(IRScriptBody script) { String clsName = jvm.scriptToClass(script.getName()); jvm.pushscript(clsName, script.getFileName()); emitScope(script, "__script__", 0); jvm.cls().visitEnd(); jvm.popclass(); }
protected void emitMethodJIT(IRMethod method, JVMVisitorMethodContext context) { String clsName = jvm.scriptToClass(method.getFile()); String name = JavaNameMangler.encodeScopeForBacktrace(method) + '$' + methodIndex++; jvm.pushscript(clsName, method.getFile()); emitWithSignatures(method, context, name); jvm.cls().visitEnd(); jvm.popclass(); }
protected void emitMethodJIT(IRMethod method, JVMVisitorMethodContext context) { String clsName = jvm.scriptToClass(method.getFile()); String name = JavaNameMangler.encodeScopeForBacktrace(method) + '$' + methodIndex++; jvm.pushscript(clsName, method.getFile()); emitWithSignatures(method, context, name); jvm.cls().visitEnd(); jvm.popclass(); }
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 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(); }
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(); }
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; }