public void assignLocalVariable(int index, boolean expr) { if (expr) { method.dup(); } method.astore(baseVariableIndex + index); }
public void getField(String name) { adapter.dup(); // self, self cacheVariableAccessor(name, false); // self, accessor loadContext(); // self, accessor, context adapter.ldc(name); invokeIRHelper("getVariableWithAccessor", sig(IRubyObject.class, IRubyObject.class, VariableAccessor.class, ThreadContext.class, String.class)); }
public void getField(String name) { adapter.dup(); // self, self cacheVariableAccessor(name, false); // self, accessor loadContext(); // self, accessor, context adapter.ldc(name); invokeIRHelper("getVariableWithAccessor", sig(IRubyObject.class, IRubyObject.class, VariableAccessor.class, ThreadContext.class, String.class)); }
public void performLogicalAnd(BranchCallback longBranch) { Label falseJmp = new Label(); // dup it since we need to return appropriately if it's false method.dup(); // call isTrue on the result isTrue(); method.ifeq(falseJmp); // EQ == 0 (i.e. false) // pop the extra result and replace with the send part of the AND method.pop(); longBranch.branch(this); method.label(falseJmp); }
public void performLogicalAnd(BranchCallback longBranch) { Label falseJmp = new Label(); // dup it since we need to return appropriately if it's false method.dup(); // call isTrue on the result isTrue(); method.ifeq(falseJmp); // EQ == 0 (i.e. false) // pop the extra result and replace with the send part of the AND method.pop(); longBranch.branch(this); method.label(falseJmp); }
public void iprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(int.class))); }
public void aprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(Object.class))); }
public void iprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(int.class))); }
public void iprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(int.class))); }
public void iprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(int.class))); }
public void aprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(Object.class))); }
public void println() { method.dup(); method.getstatic(p(System.class), "out", ci(PrintStream.class)); method.swap(); method.invokevirtual(p(PrintStream.class), "println", sig(Void.TYPE, params(Object.class))); }
public void println() { method.dup(); method.getstatic(p(System.class), "out", ci(PrintStream.class)); method.swap(); method.invokevirtual(p(PrintStream.class), "println", sig(Void.TYPE, params(Object.class))); }
public void aprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(Object.class))); }
private void ensureRuntimeCacheInited(SkinnyMethodAdapter initMethod) { if (!runtimeCacheInited) { initMethod.aload(0); initMethod.newobj(p(RuntimeCache.class)); initMethod.dup(); initMethod.invokespecial(p(RuntimeCache.class), "<init>", sig(void.class)); initMethod.putfield(p(AbstractScript.class), "runtimeCache", ci(RuntimeCache.class)); runtimeCacheInited = true; } } }
private void ensureRuntimeCacheInited(SkinnyMethodAdapter initMethod) { if (!runtimeCacheInited) { initMethod.aload(0); initMethod.newobj(p(RuntimeCache.class)); initMethod.dup(); initMethod.invokespecial(p(RuntimeCache.class), "<init>", sig(void.class)); initMethod.putfield(p(AbstractScript.class), "runtimeCache", ci(RuntimeCache.class)); runtimeCacheInited = true; } } }
public void typeCheckBranch(Class type, BranchCallback trueCallback, BranchCallback falseCallback) { Label elseLabel = new Label(); Label done = new Label(); method.dup(); method.instance_of(p(type)); method.ifeq(elseLabel); trueCallback.branch(this); method.go_to(done); method.label(elseLabel); falseCallback.branch(this); method.label(done); }
public void typeCheckBranch(Class type, BranchCallback trueCallback, BranchCallback falseCallback) { Label elseLabel = new Label(); Label done = new Label(); method.dup(); method.instance_of(p(type)); method.ifeq(elseLabel); trueCallback.branch(this); method.go_to(done); method.label(elseLabel); falseCallback.branch(this); method.label(done); }
@Override public void SValue(SValue svalue) { visit(svalue.getArray()); jvmAdapter().dup(); jvmAdapter().instance_of(p(RubyArray.class)); org.objectweb.asm.Label after = new org.objectweb.asm.Label(); jvmAdapter().iftrue(after); jvmAdapter().pop(); jvmMethod().pushNil(); jvmAdapter().label(after); }
@Override public void SValue(SValue svalue) { visit(svalue.getArray()); jvmAdapter().dup(); jvmAdapter().instance_of(p(RubyArray.class)); org.objectweb.asm.Label after = new org.objectweb.asm.Label(); jvmAdapter().iftrue(after); jvmAdapter().pop(); jvmMethod().pushNil(); jvmAdapter().label(after); }