Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.ir.instructions;
  
  import org.jruby.RubyNil;
  import org.jruby.RubyProc;
 
 import java.util.Map;
 
 public class YieldInstr extends Instr implements ResultInstr {
     public final boolean unwrapArray;
     private Operand blockArg;
     private Operand yieldArg;
     private Variable result;
 
     public YieldInstr(Variable resultOperand blockOperand argboolean unwrapArray) {
         super(.);
         
         assert result != null"YieldInstr result is null";
         
         this. = block;
         this. = arg == null ? . : arg;
         this. = unwrapArray;
         this. = result;
     }
 
     @Override
     public Instr cloneForInlining(InlinerInfo ii) {
     }
 
     public Operand getBlockArg() {
         return ;
     }
 
     public Operand getYieldArg() {
         return ;
     }
 
     @Override
     public String toString() { 
         return  ? (super.toString() + "(" +  + ", UNWRAP(" +  + "))") : (super.toString() + "(" +  + ", " +  + ")");
     }
 
     // if unwrapArray, maybe convert yieldArg into a CompoundArray operand?
     public Operand[] getOperands() {
         return new Operand[] {};
     }
     
     public Variable getResult() {
         return ;
     }    
 
     public void updateResult(Variable v) {
         this. = v;
     }
 
     public Operand[] getNonBlockOperands() {
         return new Operand[] {};
     }
 
     @Override
     public void simplifyOperands(Map<OperandOperandvalueMapboolean force) {
          = .getSimplifiedOperand(valueMapforce);
          = .getSimplifiedOperand(valueMapforce);
     }
 
     @Interp
     @Override
     public Object interpret(ThreadContext contextDynamicScope currDynScopeIRubyObject selfObject[] tempBlock block) {
         Object resultValue;
         Object blk = (Object.retrieve(contextselfcurrDynScopetemp);
         if (blk instanceof RubyProcblk = ((RubyProc)blk).getBlock();
         if (blk instanceof RubyNilblk = .;
         Block b = (Block)blk;
         // Ruby 1.8 mode: yields are always to normal blocks
         if (!context.runtime.is1_9()) b.type = ..;
         if ( == .) {
             return b.yieldSpecific(context);
         } else {
             IRubyObject yieldVal = (IRubyObject).retrieve(contextselfcurrDynScopetemp);
             return ( && (yieldVal instanceof RubyArray)) ? b.yieldArray(contextyieldValnullnull) : b.yield(contextyieldVal);
         }
     }
 
     @Override
     public void visit(IRVisitor visitor) {
         visitor.YieldInstr(this);
     }
New to GrepCode? Check out our FAQ X