Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.jruby.ir.operands;
 
A set of variables which are only used in a particular scope and never visible to Ruby itself.
public class TemporaryVariable extends Variable {
    public final int offset;
    String name;
    public TemporaryVariable(int offset) {
        this. = offset;
        this. = getPrefix() + offset;
    }
	 // Used for temporary variables like %current_module, %_arg_array
    public TemporaryVariable(String nameint offset) {
        this. = offset;
        this. = name;
    }
    @Override
    public String getName() {
        return ;
    }
    @Override
    public int hashCode() {
        return getName().hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        if (obj == null || !(obj instanceof TemporaryVariable)) return false;
        return .equals(((TemporaryVariableobj).);
    }
    public int compareTo(Object other) {
        if (!(other instanceof TemporaryVariable)) return 0;
        
        return .compareTo(((TemporaryVariableother).);
    }
    protected String getPrefix() {
        return "%v_";
    }
    @Override
    public String toString() {
        return getName();
    }
    @Override
        return new TemporaryVariable();
    }
    @Override
    public Object retrieve(ThreadContext contextIRubyObject selfDynamicScope currDynScopeObject[] temp) {
		  // SSS FIXME: When AddLocalVarLoadStoreInstructions pass is not enabled, we don't need this check.
		  // We only need these because Ruby code can have local vars used before being defined.
		  // 
		  //    a = 1 if always-false
		  //    p a   # should print nil since a is not defined on the else path
		  //
		  // Now, when locals are promoted to temps, this local-var behavior gets transferred to tmp-vars as well!
		  //
		  // If can canonicalize Ruby code to get rid of use-before-defs, we can get rid of the null checks
		  // both here and in DynamicScope var lookups.  To be done later.
		  //
		  // I dont like this at all.  This feels ugly!
		  Object o = temp[];
		  return o == null ? context.nil : o;
    }
    @Override
    public void visit(IRVisitor visitor) {
        visitor.TemporaryVariable(this);
    }
New to GrepCode? Check out our FAQ X