@Override public Object interpret(ThreadContext context, StaticScope currScope, DynamicScope currDynScope, IRubyObject self, Object[] temp) { // ENEBO: Can I assume since IR figured this is an internal array it will be RubyArray like this? RubyArray rubyArray = (RubyArray) getArray().retrieve(context, self, currScope, currDynScope, temp); return IRRuntimeHelpers.extractOptionalArgument(rubyArray, minArgsLength, index); }
@Override public Object interpret(ThreadContext context, StaticScope currScope, DynamicScope currDynScope, IRubyObject self, Object[] temp) { // ENEBO: Can I assume since IR figured this is an internal array it will be RubyArray like this? RubyArray rubyArray = (RubyArray) getArray().retrieve(context, self, currScope, currDynScope, temp); return IRRuntimeHelpers.extractOptionalArgument(rubyArray, minArgsLength, index); }
@Override public Instr clone(CloneInfo ii) { return new OptArgMultipleAsgnInstr(ii.getRenamedVariable(result), getArray().cloneForInlining(ii), index, minArgsLength); }
@Override public Instr clone(CloneInfo ii) { return new OptArgMultipleAsgnInstr(ii.getRenamedVariable(result), getArray().cloneForInlining(ii), index, minArgsLength); }
@Override public void encode(IRWriterEncoder e) { super.encode(e); e.encode(getArray()); e.encode(getIndex()); e.encode(getMinArgsLength()); }
@Override public void encode(IRWriterEncoder e) { super.encode(e); e.encode(getArray()); e.encode(getIndex()); e.encode(getMinArgsLength()); }
@Override public void OptArgMultipleAsgnInstr(OptArgMultipleAsgnInstr optargmultipleasgninstr) { visit(optargmultipleasgninstr.getArray()); jvmAdapter().checkcast(p(RubyArray.class)); jvmAdapter().ldc(optargmultipleasgninstr.getMinArgsLength()); jvmAdapter().ldc(optargmultipleasgninstr.getIndex()); jvmAdapter().invokestatic(p(IRRuntimeHelpers.class), "extractOptionalArgument", sig(IRubyObject.class, RubyArray.class, int.class, int.class)); jvmStoreLocal(optargmultipleasgninstr.getResult()); }
@Override public void OptArgMultipleAsgnInstr(OptArgMultipleAsgnInstr optargmultipleasgninstr) { visit(optargmultipleasgninstr.getArray()); jvmAdapter().checkcast(p(RubyArray.class)); jvmAdapter().ldc(optargmultipleasgninstr.getMinArgsLength()); jvmAdapter().ldc(optargmultipleasgninstr.getIndex()); jvmAdapter().invokestatic(p(IRRuntimeHelpers.class), "extractOptionalArgument", sig(IRubyObject.class, RubyArray.class, int.class, int.class)); jvmStoreLocal(optargmultipleasgninstr.getResult()); }