Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.jruby.ir;
 
 import java.util.List;
public class IRMethod extends IRScope {
    public final boolean isInstanceMethod;
    // SSS FIXME: Note that if operands from the method are modified,
    // callArgs would have to be updated as well
    // Call parameters
    private List<OperandcallArgs;
    // Argument description of the form [:req, "a"], [:opt, "b"] ..
    private List<String[]> argDesc;
    
    public IRMethod(IRManager managerIRScope lexicalParentString name,
            boolean isInstanceMethodint lineNumberStaticScope staticScope) {
        super(managerlexicalParentnamelexicalParent.getFileName(), lineNumberstaticScope);
        
        this. = isInstanceMethod;
        this. = new ArrayList<Operand>();
        this. = new ArrayList<String[]>();
        if (!getManager().isDryRun()) {
            if (staticScope != null) ((IRStaticScope)staticScope).setIRScope(this);
        }
    }
    public String getScopeName() {
        return "Method";
    }
    @Override
    public void addInstr(Instr i) {
        // Accumulate call arguments
        if (i instanceof ReceiveRestArgBase.add(new Splat(((ReceiveRestArgBase)i).getResult()));
        else if (i instanceof ReceiveArgBase.add(((ReceiveArgBasei).getResult());
        super.addInstr(i);
    }
    public void addArgDesc(String typeString argName) {
        .add(new String[]{typeargName});
    }
    public List<String[]> getArgDesc() {
        return ;
    }
    public Operand[] getCallArgs() {
        return .toArray(new Operand[.size()]);
    }
    @Override
    public LocalVariable findExistingLocalVariable(String nameint scopeDepth) {
        assert scopeDepth == 0: "Local variable depth in IRMethod should always be zero (" + name + " had depth of " + scopeDepth + ")";
        return .getVariable(name);
    }
    @Override
    public LocalVariable getNewLocalVariable(String nameint scopeDepth) {
        assert scopeDepth == 0: "Local variable depth in IRMethod should always be zero (" + name + " had depth of " + scopeDepth + ")";
        LocalVariable lvar = new LocalVariable(name, 0, .);
        .putVariable(namelvar);
        return lvar;
    }
    @Override
    public LocalVariable getLocalVariable(String nameint scopeDepth) {
        LocalVariable lvar = findExistingLocalVariable(namescopeDepth);
        if (lvar == nulllvar = getNewLocalVariable(namescopeDepth);
        return lvar;
    }
    public LocalVariable getImplicitBlockArg() {
        return getLocalVariable(., 0);
    }
New to GrepCode? Check out our FAQ X