Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.jruby.ir;
  
  import java.util.List;
 
 public class IREvalScript extends IRClosure {
     private static final Logger LOG = LoggerFactory.getLogger("IREvalScript");
 
     private IRScope nearestNonEvalScope;
     private int     nearestNonEvalScopeDepth;
     private List<IRClosurebeginBlocks;
     private List<IRClosureendBlocks;
 
     public IREvalScript(IRManager managerIRScope lexicalParentString fileName,
             int lineNumberStaticScope staticScope) {
         super(managerlexicalParentfileNamelineNumberstaticScope"EVAL_");
         
         int n = 0;
         IRScope s = lexicalParent;
         while (s instanceof IREvalScript) {
             n++;
             s = s.getLexicalParent();
         }
 
         this. = s;
         this. = n;
     }
 
     @Override
     public Label getNewLabel() {
         return getNewLabel("EV" +  + "_LBL");
     }
 
     @Override
     public String getScopeName() {
         return "EvalScript";
     }
 
     @Override
     public Operand[] getBlockArgs() { 
         return new Operand[0];
     }
 
     /* Record a begin block -- not all scope implementations can handle them */
     @Override
     public void recordBeginBlock(IRClosure beginBlockClosure) {
         if ( == null = new ArrayList<IRClosure>();
         .add(beginBlockClosure);
     }
 
     /* Record an end block -- not all scope implementations can handle them */
     @Override
     public void recordEndBlock(IRClosure endBlockClosure) {
         if ( == null = new ArrayList<IRClosure>();
         .add(endBlockClosure);
     }
 
     public List<IRClosuregetBeginBlocks() {
         return ;
     }
 
     public List<IRClosuregetEndBlocks() {
         return ;
     }
 
     public IRubyObject call(ThreadContext contextIRubyObject selfRubyModule clazzDynamicScope evalScopeBlock blockString backtraceName) {
         if (Interpreter.isDebug()) {
             .info("CFG:\n" + cfg());
         }
         try {
             context.pushScope(evalScope);
 
             // Since IR introduces additional local vars, we may need to grow the dynamic scope.
             // To do that, IREvalScript has to tell the dyn-scope how many local vars there are.
             // Since the same static scope (the scope within which the eval string showed up)
             // might be shared by multiple eval-scripts, we cannot 'setIRScope(this)' once and
             // forget about it.  We need to set this right before we are ready to grow the
             // dynamic scope local var space.
             ((IRStaticScope)getStaticScope()).setIRScope(this);
             evalScope.growIfNeeded();
 
             // FIXME: Do not push new empty arg array in every time
             return Interpreter.INTERPRET_EVAL(contextselfthisclazznew IRubyObject[] {}, backtraceNameblocknull);
         }
        finally {
            context.popScope();
        }
    }
    @Override
    public LocalVariable findExistingLocalVariable(String nameint scopeDepth) {
        // Look in the nearest non-eval scope's shared eval scope vars first.
        // If you dont find anything there, look in the nearest non-eval scope's regular vars.
        if ((lvar != null) || scopeDepth == 0) return lvar;
        else return .findExistingLocalVariable(namescopeDepth--1);
    }
    @Override
    public LocalVariable getNewLocalVariable(String nameint depth) {
        assert depth == "Local variable depth in IREvalScript:getNewLocalVariable must be " +  + ".  Got " + depth;
        LocalVariable lvar = new ClosureLocalVariable(thisname, 0, ..);
        ..putVariable(namelvar);
        return lvar;
    }
    @Override
        return getLocalVariable("%flip_" + allocateNextPrefixedName("%flip"), 0);
    }
    @Override
    public int getUsedVariablesCount() {
        return 1 + .. + getPrefixCountSize("%flip");
    }
    
    @Override
    public boolean isScriptScope() {
        return true;
    }
    
    @Override
    public boolean isTopLocalVariableScope() {
        return false;
    }    
    @Override
    public boolean isFlipScope() {
        return true;
    }
New to GrepCode? Check out our FAQ X