public abstract class IRScope extends Object implements ParseResult
Modifier and Type | Field and Description |
---|---|
protected int |
booleanVariableIndex |
protected int |
fixnumVariableIndex |
protected int |
floatVariableIndex |
protected InterpreterContext |
interpreterContext
What the interpreter depends on to interpret this IRScope
|
protected int |
temporaryVariableIndex |
Modifier | Constructor and Description |
---|---|
|
IRScope(IRManager manager,
IRScope lexicalParent,
String name,
String fileName,
int lineNumber,
StaticScope staticScope) |
protected |
IRScope(IRScope s,
IRScope lexicalParent) |
protected InterpreterContext interpreterContext
protected int temporaryVariableIndex
protected int floatVariableIndex
protected int fixnumVariableIndex
protected int booleanVariableIndex
public IRScope(IRManager manager, IRScope lexicalParent, String name, String fileName, int lineNumber, StaticScope staticScope)
public int getScopeId()
protected void addChildScope(IRScope scope)
public void initNestedClosures()
public void addClosure(IRClosure closure)
public void removeClosure(IRClosure closure)
public void addInstrAtBeginning(Instr instr)
public void addInstr(Instr instr)
public LocalVariable getNewFlipStateVariable()
public Label getNewLabel()
public IRManager getManager()
public IRScope getLexicalParent()
public StaticScope getStaticScope()
public IRMethod getNearestMethod()
public IRScope getNearestFlipVariableScope()
public IRScope getNearestTopLocalVariableScope()
public int getNearestModuleReferencingScopeDepth()
public String getName()
public void setName(String name)
public String getFileName()
public int getLineNumber()
public IRScope getTopLevelScope()
public boolean isNestedInClosure(IRClosure closure)
public void setHasLoopsFlag()
public boolean hasLoops()
public boolean hasExplicitCallProtocol()
public void setExplicitCallProtocolFlag()
public boolean receivesKeywordArgs()
public boolean bindingHasEscaped()
public boolean usesBackrefOrLastline()
public boolean usesEval()
public boolean usesZSuper()
public boolean canReceiveNonlocalReturns()
public CFG buildCFG()
protected void setCFG(CFG cfg)
public CFG getCFG()
protected Instr[] prepareInstructions()
public List<CompilerPass> getExecutedPasses()
protected void initScope(boolean jitMode)
public InterpreterContext allocateInterpreterContext(Instr[] instructionList)
public InterpreterContext prepareForInterpretation()
public List<BasicBlock> prepareForCompilation()
public Map<BasicBlock,Label> buildJVMExceptionTable()
public void computeScopeFlags()
public abstract IRScopeType getScopeType()
public String toStringInstrs()
public LocalVariable getSelf()
public Variable getCurrentModuleVariable()
public Variable getCurrentScopeVariable()
public Map<String,LocalVariable> getLocalVariables()
public void setLocalVariables(Map<String,LocalVariable> variables)
public LocalVariable lookupExistingLVar(String name)
protected LocalVariable findExistingLocalVariable(String name, int depth)
public LocalVariable getLocalVariable(String name, int scopeDepth)
public LocalVariable getNewLocalVariable(String name, int scopeDepth)
protected void initEvalScopeVariableAllocator(boolean reset)
public TemporaryLocalVariable createTemporaryVariable()
public TemporaryLocalVariable getNewTemporaryVariableFor(LocalVariable var)
public TemporaryLocalVariable getNewTemporaryVariable(TemporaryVariableType type)
public void setTemporaryVariableCount(int count)
public TemporaryVariable getYieldClosureVariable()
public TemporaryLocalVariable getNewUnboxedVariable(Class type)
public void resetTemporaryVariables()
public int getTemporaryVariablesCount()
public int getFloatVariablesCount()
public int getFixnumVariablesCount()
public int getBooleanVariablesCount()
public int getThreadPollInstrsCount()
public int getLocalVariablesCount()
public int getUsedVariablesCount()
public void setUpUseDefLocalVarMaps()
public boolean usesLocalVariable(Variable v)
public boolean definesLocalVariable(Variable v)
public void setDataFlowSolution(String name, DataFlowProblem p)
public DataFlowProblem getDataFlowSolution(String name)
public InterpreterContext getInterpreterContext()
public void resetLinearizationData()
public BasicBlock[] buildLinearization()
public BasicBlock[] linearization()
protected void depends(Object obj)
public CFG cfg()
public void resetState()
public void inlineMethod(IRScope method, RubyModule implClass, int classToken, BasicBlock basicBlock, CallBase call, boolean cloneHost)
public void recordBeginBlock(IRClosure beginBlockClosure)
protected int allocateNextPrefixedName(String prefix)
public void setPrefixedNameIndexTo(String prefix, int newIndex)
protected void resetVariableCounter(String prefix)
protected int getPrefixCountSize(String prefix)
public int getNextClosureId()
public boolean isBeginEndBlock()
public boolean isModuleBody()
public boolean isNonSingletonClassBody()
public boolean isFlipScope()
public boolean isTopLocalVariableScope()
public boolean isScriptScope()
public void savePersistenceInfo(int offset, IRReaderDecoder file)
Copyright © 2001-2015 JRuby. All Rights Reserved.