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 InheritanceSearchConstInstr extends Instr implements ResultInstr {
     Operand  currentModule;
     String   constName;
     private Variable result;
     private boolean  noPrivateConsts;
 
     // Constant caching
     private volatile transient Object cachedConstant = null;
     private volatile int hash = -1;
     private volatile Object generation = -1;
     private Invalidator invalidator;
 
     public InheritanceSearchConstInstr(Variable resultOperand currentModuleString constNameboolean noPrivateConsts) {
         super(.);
 
         assert result != null"InheritanceSearchConstInstr result is null";
 
         this. = currentModule;
         this. = constName;
         this. = result;
         this. = noPrivateConsts;
     }
 
     @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(Ruby runtimeRubyModule module) {
         Object constant =  ? module.getConstantFromNoConstMissing(false) : module.getConstantNoConstMissing();
         if (constant == null) {
             constant = .;
         } else {
             // recache
              = runtime.getConstantInvalidator().getData();
              = module.hashCode();
              = constant;
         }
         return constant;
     }
 
     private boolean isCached(Ruby runtimeRubyModule targetObject value) {
         return value != null &&  == invalidator(runtime).getData() &&  == target.hashCode();
     }
 
     @Override
     public Object interpret(ThreadContext contextDynamicScope currDynScopeIRubyObject selfObject[] tempBlock block) {
         Ruby runtime = context.runtime;
         Object cmVal = .retrieve(contextselfcurrDynScopetemp);
         RubyModule module;
         if (cmVal instanceof RubyModule) {
             module = (RubyModulecmVal;
         } else {
            throw runtime.newTypeError(cmVal + " is not a type/class");
        }
        Object constant = // Store to temp so it does null out on us mid-stream
        if (!isCached(runtimemoduleconstant)) constant = cache(runtimemodule);
        return constant;
    }
    @Override
    public void visit(IRVisitor visitor) {
        visitor.InheritanceSearchConstInstr(this);
    }
    public Operand getCurrentModule() {
        return ;
    }
    public String getConstName() {
        return ;
    }
    public boolean isNoPrivateConsts() {
        return ;
    }
    private Invalidator invalidator(Ruby runtime) {
        if ( == null) {
             = runtime.getConstantInvalidator();
        }
        return ;
    }
New to GrepCode? Check out our FAQ X