Class ScopeModule

java.lang.Object
org.jruby.ir.operands.Operand
org.jruby.ir.operands.ScopeModule

public class ScopeModule extends Operand
Wrap a scope for the purpose of finding live module which happens to be associated with it.
  • Field Details

    • SCOPE_MODULE

      public static final ScopeModule[] SCOPE_MODULE
  • Constructor Details

    • ScopeModule

      public ScopeModule(int scopeModuleDepth)
  • Method Details

    • ModuleFor

      public static ScopeModule ModuleFor(int depth)
    • getOperandType

      public OperandType getOperandType()
      Specified by:
      getOperandType in class Operand
    • addUsedVariables

      public void addUsedVariables(List<Variable> l)
      Description copied from class: Operand
      Append the list of variables used in this operand to the input list -- force every operand to implement this because a missing implementation can cause bad failures.
      Specified by:
      addUsedVariables in class Operand
    • cloneForInlining

      public Operand cloneForInlining(CloneInfo ii)
      Specified by:
      cloneForInlining in class Operand
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • getScopeModuleDepth

      public int getScopeModuleDepth()
    • equals

      public boolean equals(Object other)
      Overrides:
      equals in class Object
    • 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 class Operand
      Returns:
      true if it is safe to copy-propagate the operand.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • retrieve

      public Object retrieve(ThreadContext context, IRubyObject self, StaticScope currScope, DynamicScope currDynScope, Object[] temp)
      Overrides:
      retrieve in class Operand
    • encode

      public void encode(IRWriterEncoder e)
      Overrides:
      encode in class Operand
    • decode

      public static ScopeModule decode(IRReaderDecoder d)
    • visit

      public void visit(IRVisitor visitor)
      Overrides:
      visit in class Operand