Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.jruby.ir.passes;
 
 import java.util.List;
 import java.util.Map;
    @Override
    public String getLabel() {
        return "Add Local Variable Load/Store Instructions";
    }
    public static List<Class<? extends CompilerPass>> DEPENDENCIES = Arrays.<Class<? extends CompilerPass>>asList(LiveVariableAnalysis.class);
    @Override
    public List<Class<? extends CompilerPass>> getDependencies() {
        return ;
    }
    @Override
    public Object execute(IRScope sObject... data) {
        // SSS FIXME: In ancient times, I had this check that wrapped the code below.
        // Still useful?
        //
        // if (s.requiresBinding()) {
        // }
        // 1. Figure out required stores
        // 2. Add stores
        // 3. Figure out required loads
        // 4. Add loads
        //
        // Order is important since loads in 3. depend on stores in 2.
        slvp.setup(s);
        slvp.compute_MOP_Solution();
        // Add stores, assigning an equivalent tmp-var for each local var
        Map<OperandOperandvarRenameMap = new HashMap<OperandOperand>();
        slvp.addStores(varRenameMap);
        // Once stores have been added, figure out required loads
        llvp.setup(s);
        llvp.compute_MOP_Solution();
        // Add loads,
        llvp.addLoads(varRenameMap);
        // Rename all local var uses with their tmp-var stand-ins
        for (BasicBlock bs.getCFG().getBasicBlocks()) {
            for (Instr ib.getInstrs()) i.renameVars(varRenameMap);
        }
        // Run on all nested closures.
        // In the current implementation, nested scopes are processed independently (unlike Live Variable Analysis)
        for (IRClosure cs.getClosures()) execute(c);
        return slvp;
    }
    @Override
    public Object previouslyRun(IRScope scope) {
    }
    @Override
    public void invalidate(IRScope scope) {
    }
New to GrepCode? Check out our FAQ X