Package org.jruby.ir.operands
Class Variable
java.lang.Object
org.jruby.ir.operands.Operand
org.jruby.ir.operands.Variable
- Direct Known Subclasses:
LocalVariable
,Self
,TemporaryVariable
-
Field Summary
Fields inherited from class org.jruby.ir.operands.Operand
EMPTY_ARRAY
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Append the list of variables used in this operand to the input listboolean
Can we replace every use of a variable 'v' that contains the value of this operand with the operand itself? This takes importance when there are at least two uses of 'v' within this scope.abstract Variable
clone
(SimpleCloneInfo ii) abstract String
getId()
getSimplifiedOperand
(Map<Operand, Operand> valueMap, boolean force) boolean
isSelf()
Methods inherited from class org.jruby.ir.operands.Operand
encode, getOperandType, hasKnownValue, isFalseyImmediate, isTruthyImmediate, retrieve, visit
-
Constructor Details
-
Variable
public Variable()
-
-
Method Details
-
getId
-
canCopyPropagate
public boolean canCopyPropagate()Description copied from class:Operand
Can we replace every use of a variable 'v' that contains the value of this operand with the operand itself? This takes importance when there are at least two uses of 'v' within this scope. Ex: v = [1,2,3]; x = v; y = v In this case, we cannot replace the occurrences of 'v' because we would then get x = [1,2,3]; y = [1,2,3] which would then result in two different array objects being constructed instead of a single one.- Overrides:
canCopyPropagate
in classOperand
- Returns:
- true if it is safe to copy-propagate the operand.
-
getSimplifiedOperand
- Overrides:
getSimplifiedOperand
in classOperand
-
isSelf
public boolean isSelf() -
getValue
-
addUsedVariables
Append the list of variables used in this operand to the input list- Specified by:
addUsedVariables
in classOperand
-
clone
-
cloneForInlining
- Specified by:
cloneForInlining
in classOperand
-