Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.ir.instructions;
  
  import org.jruby.Ruby;
 
 import java.util.Map;
 
 // The runtime method call that GET_CONST is translated to in this case will call
 // a get_constant method on the scope meta-object which does the lookup of the constant table
 // on the meta-object.  In the case of method & closures, the runtime method will delegate
 // this call to the parent scope.
 
 public class LexicalSearchConstInstr extends Instr implements ResultInstr {
     String constName;
     private Variable result;
 
     // Constant caching
     private volatile transient Object cachedConstant = null;
     private Object generation = -1;
     private Invalidator invalidator;
 
     public LexicalSearchConstInstr(Variable resultOperand definingScopeString constName) {
         super(.);
 
         assert result != null"LexicalSearchConstInstr result is null";
 
         this. = definingScope;
         this. = constName;
         this. = result;
     }
 
     @Override
     public Operand[] getOperands() {
         return new Operand[] {  };
     }
 
     @Override
     public void simplifyOperands(Map<OperandOperandvalueMapboolean force) {
          = .getSimplifiedOperand(valueMapforce);
     }
 
     public Variable getResult() {
         return ;
     }
 
     public void updateResult(Variable v) {
         this. = v;
     }
 
     @Override
     public Instr cloneForInlining(InlinerInfo ii) {
     }
 
     @Override
     public String toString() {
         return super.toString() + "(" +  + ", " +   + ")";
     }
 
     private Object cache(ThreadContext contextDynamicScope currDynScopeIRubyObject selfObject[] tempRuby runtimeObject constant) {
         StaticScope staticScope = (StaticScope.retrieve(contextselfcurrDynScopetemp);
         RubyModule object = runtime.getObject();
         // SSS FIXME: IRManager objects dont have a static-scope yet, so this hack of looking up the module right away
         // This IR needs fixing!
         constant = (staticScope == null) ? object.getConstant() : staticScope.getConstantInner();
         if (constant == null) {
             constant = .;
         } else {
             // recache
              = invalidator(runtime).getData();
              = constant;
         }
         return constant;
     }
 
     private boolean isCached(Ruby runtimeObject value) {
         return value != null &&  == invalidator(runtime).getData();
     }
 
     @Override
     public Object interpret(ThreadContext contextDynamicScope currDynScopeIRubyObject selfObject[] tempBlock block) {
         Ruby runtime = context.runtime;
         Object constant = // Store to temp so it does null out on us mid-stream
         if (!isCached(runtimeconstant)) constant = cache(contextcurrDynScopeselftempruntimeconstant);
 
         return constant;
    }
    @Override
    public void visit(IRVisitor visitor) {
        visitor.LexicalSearchConstInstr(this);
    }
    private Invalidator invalidator(Ruby runtime) {
        if ( == null) {
             = runtime.getConstantInvalidator();
        }
        return ;
    }
New to GrepCode? Check out our FAQ X