Top Description Fields Constructors Methods
org.jruby.ir.interpreter

public Class FullInterpreterContext

extends InterpreterContext
Class Inheritance
Imports
java.util.ArrayList, .EnumSet, .HashMap, .HashSet, .List, .Map, .Set, org.jruby.ir.IRClosure, .IRFlags, .IRScope, .IRScopeType, org.jruby.ir.dataflow.DataFlowProblem, org.jruby.ir.instructions.Instr, .LabelInstr, .ReceiveSelfInstr, .ResultInstr, .Site, org.jruby.ir.operands.Fixnum, .LocalVariable, .TemporaryBooleanVariable, .TemporaryClosureVariable, .TemporaryFixnumVariable, .TemporaryFloatVariable, .TemporaryLocalReplacementVariable, .TemporaryLocalVariable, .TemporaryVariable, .TemporaryVariableType, .Variable, org.jruby.ir.passes.CompilerPass, org.jruby.ir.representations.BasicBlock, .CFG, .CFGLinearizer, org.jruby.ir.transformations.inlining.SimpleCloneInfo

Created by enebo on 2/27/15.

Field Summary

Modifier and TypeField and Description
public int
private final CFG
private Map<String, DataFlowProblem<T extends DataFlowProblem<T, U>, U extends FlowGraphNode<T, U>>>
dataFlowProblems

Map of name -> dataflow problem

private Set<LocalVariable>
definedLocalVars

Local variables defined in this scope

private final List<CompilerPass>
executedPasses

What passes have been run on this scope?

public int
public int
private BasicBlock[]
private Set<LocalVariable>
usedLocalVars

Local variables used in this scope

Inherited from org.jruby.ir.interpreter.InterpreterContext:
dynamicScopeEliminatedhasExplicitCallProtocolinstructionsinstructionsCallbackrescueIPCstemporaryVariableCount

Constructor Summary

AccessConstructor and Description
public
FullInterpreterContext(IRScope scope, CFG cfg, BasicBlock[] linearizedBBList, int temporaryVariableCount, EnumSet<IRFlags> flags)

public
FullInterpreterContext(IRScope scope, Instr[] instructions, int temporaryVariableCount, EnumSet<IRFlags> flags)

Method Summary

Modifier and TypeMethod and Description
public boolean
private CFG
buildCFG(Instr[] instructions)

public void
public TemporaryVariable
public boolean
public int
determineRPC(int ipc)

public FullInterpreterContext
public BasicBlock
findBasicBlockOf(long callsiteId)

public void
generateInstructionsForInterpretation()

We plan on running this in full interpreted mode.

public CFG
public Map<String, DataFlowProblem<T extends DataFlowProblem<T, U>, U extends FlowGraphNode<T, U>>>
public List<CompilerPass>
public BasicBlock[]
public TemporaryLocalVariable
public TemporaryLocalVariable
public TemporaryLocalVariable
public Set<LocalVariable>
getUsedLocalVariables()

Get all variables referenced by this scope.

public boolean
protected void
public BasicBlock[]
public boolean
public boolean
public boolean
public void
public String
public String
public boolean
Inherited from org.jruby.ir.interpreter.InterpreterContext:
allocateTemporaryBooleanVariablesallocateTemporaryFixnumVariablesallocateTemporaryFloatVariablesallocateTemporaryVariablesgetEnginegetFileNamegetFlagsgetInstructionsgetLinegetNamegetRequiredArgsCountgetRescueIPCsgetScopegetStaticScopegetTemporaryVariableCountisDynamicScopeEliminatedisENDisRuby2KeywordsnewDynamicScopepopDynScopepushNewDynScopereceivesKeywordArgumentsreuseParentDynScopesetDynamicScopeEliminatedsetExplicitCallProtocolsetReuseParentDynScopetoString

Field Detail

booleanVariableIndexback to summary
public int booleanVariableIndex
cfgback to summary
private final CFG cfg
dataFlowProblemsback to summary
private Map<String, DataFlowProblem<T extends DataFlowProblem<T, U>, U extends FlowGraphNode<T, U>>> dataFlowProblems

Map of name -> dataflow problem

definedLocalVarsback to summary
private Set<LocalVariable> definedLocalVars

Local variables defined in this scope

executedPassesback to summary
private final List<CompilerPass> executedPasses

What passes have been run on this scope?

fixnumVariableIndexback to summary
public int fixnumVariableIndex
floatVariableIndexback to summary
public int floatVariableIndex
linearizedBBListback to summary
private BasicBlock[] linearizedBBList
usedLocalVarsback to summary
private Set<LocalVariable> usedLocalVars

Local variables used in this scope

Constructor Detail

FullInterpreterContextback to summary
public FullInterpreterContext(IRScope scope, CFG cfg, BasicBlock[] linearizedBBList, int temporaryVariableCount, EnumSet<IRFlags> flags)
FullInterpreterContextback to summary
public FullInterpreterContext(IRScope scope, Instr[] instructions, int temporaryVariableCount, EnumSet<IRFlags> flags)

Method Detail

bindingHasEscapedback to summary
public boolean bindingHasEscaped()
buildCFGback to summary
private CFG buildCFG(Instr[] instructions)
computeScopeFlagsFromInstructionsback to summary
public void computeScopeFlagsFromInstructions()

Overrides org.jruby.ir.interpreter.InterpreterContext.computeScopeFlagsFromInstructions.

Annotations
@Override
createTemporaryVariableback to summary
public TemporaryVariable createTemporaryVariable()
definesLocalVariableback to summary
public boolean definesLocalVariable(Variable v)
determineRPCback to summary
public int determineRPC(int ipc)
duplicateback to summary
public FullInterpreterContext duplicate()
findBasicBlockOfback to summary
public BasicBlock findBasicBlockOf(long callsiteId)
generateInstructionsForInterpretationback to summary
public void generateInstructionsForInterpretation()

We plan on running this in full interpreted mode. This will fixup ipc, rpc, and generate instr list

getCFGback to summary
public CFG getCFG()

Overrides org.jruby.ir.interpreter.InterpreterContext.getCFG.

Annotations
@Override
getDataFlowProblemsback to summary
public Map<String, DataFlowProblem<T extends DataFlowProblem<T, U>, U extends FlowGraphNode<T, U>>> getDataFlowProblems()
getExecutedPassesback to summary
public List<CompilerPass> getExecutedPasses()
getLinearizedBBListback to summary
public BasicBlock[] getLinearizedBBList()
getNewTemporaryVariableback to summary
public TemporaryLocalVariable getNewTemporaryVariable(TemporaryVariableType type)
getNewTemporaryVariableForback to summary
public TemporaryLocalVariable getNewTemporaryVariableFor(LocalVariable var)
getNewUnboxedVariableback to summary
public TemporaryLocalVariable getNewUnboxedVariable(Class<T> type)
getUsedLocalVariablesback to summary
public Set<LocalVariable> getUsedLocalVariables()

Get all variables referenced by this scope.

hasExplicitCallProtocolback to summary
public boolean hasExplicitCallProtocol()

Overrides org.jruby.ir.interpreter.InterpreterContext.hasExplicitCallProtocol.

Annotations
@Override
initializeback to summary
protected void initialize()

Overrides org.jruby.ir.interpreter.InterpreterContext.initialize.

linearizeBasicBlocksback to summary
public BasicBlock[] linearizeBasicBlocks()
needsBindingback to summary
public boolean needsBinding()
needsFrameback to summary
public boolean needsFrame()
needsOnlyBackrefback to summary
public boolean needsOnlyBackref()
setUpUseDefLocalVarMapsback to summary
public void setUpUseDefLocalVarMaps()
toStringInstrsback to summary
public String toStringInstrs()

Overrides org.jruby.ir.interpreter.InterpreterContext.toStringInstrs.

Annotations
@Override
toStringLinearizedback to summary
public String toStringLinearized()
usesLocalVariableback to summary
public boolean usesLocalVariable(Variable v)