Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
 package org.jruby.ir.passes;
 
 import java.util.Map;
public class BasicCompilerPassListener implements CompilerPassListener {
    private static final Logger LOG = LoggerFactory.getLogger("BasicCompilerPassListener");
    
    private Map<CompilerPassLongtimes = new HashMap<CompilerPassLong>();
    public void alreadyExecuted(CompilerPass passClassIRScope scopeObject databoolean childScope) {
    }
    public void startExecute(CompilerPass passIRScope scopeboolean childScope) {
        .put(passnew Long(System.currentTimeMillis()));
        .info("Starting " + pass.getLabel() + " on scope " + scope);
    }
    public void endExecute(CompilerPass passIRScope scopeObject databoolean childScope) {
        Long startTime = .get(pass);
        long timeTaken = startTime != null ? System.currentTimeMillis() - startTime.longValue() : -1;
        
        CFG c = scope.getCFG();
        
        if (c != null) {
            .info("\nGraph:\n" + c.toStringGraph());
            .info("\nInstructions:\n" + c.toStringInstrs());
        } else {
            .info("\n  instrs:\n" + scope.toStringInstrs());
            .info("\n  live variables:\n" + scope.toStringVariables());
        }        
        
        if (startTime > 0) {
            .info("Finished " + pass.getLabel() + " on scope in " + timeTaken + "ms.");
        } else { // Not really sure we should allow same pass to be run twice in same pass order run...too defensive?
            .info("Finished " + pass.getLabel() + " on scope " + scope);
        }
    }
New to GrepCode? Check out our FAQ X