Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.jruby.ir.instructions;
 
public class ReqdArgMultipleAsgnInstr extends MultipleAsgnBase {
    private final int preArgsCount;    // # of reqd args before rest-arg (-1 if we are fetching a pre-arg)
    private final int postArgsCount;   // # of reqd args after rest-arg  (-1 if we are fetching a pre-arg)
    public ReqdArgMultipleAsgnInstr(Variable resultOperand arrayint preArgsCountint postArgsCountint index) {
        super(.resultarrayindex);
        this. = preArgsCount;
        this. = postArgsCount;
    }
    public ReqdArgMultipleAsgnInstr(Variable resultOperand arrayint index) {
        this(resultarray, -1, -1, index);
    }
    @Override
    public String toString() {
        return super.toString() + "(" +  + ", " +  + ", " +  + ", " +  + ")";
    }
    @Override
    public Instr cloneForInlining(InlinerInfo ii) {
    }
    @Override
    public Object interpret(ThreadContext contextDynamicScope currDynScopeIRubyObject selfObject[] tempBlock block) {
        // ENEBO: Can I assume since IR figured this is an internal array it will be RubyArray like this?
        RubyArray rubyArray = (RubyArray.retrieve(contextselfcurrDynScopetemp);
        Object val;
        
        int n = rubyArray.getLength();
        if ( == -1) {
            // Masgn for 1.8 and 1.9 pre-reqd. args always comes down this path!
            return rubyArray.entry();
        } else {
            // Masgn for 1.9 post-reqd args always come down this path
            int remaining = n - ;
            if (remaining <= ) {
                return context.nil;
            } else {
                return (remaining > ) ? rubyArray.entry(n -  + ) : rubyArray.entry( + );
            }
        }
    }
    @Override
    public void visit(IRVisitor visitor) {
        visitor.ReqdArgMultipleAsgnInstr(this);
    }
New to GrepCode? Check out our FAQ X