public CompilerPassScheduler schedulePasses() { return schedulePasses(compilerPasses); }
public CompilerPassScheduler schedulePasses() { return schedulePasses(compilerPasses); }
private void runCompilerPasses() { // SSS FIXME: Why is this again? Document this weirdness! // Forcibly clear out the shared eval-scope variable allocator each time this method executes initEvalScopeVariableAllocator(true); // SSS FIXME: We should configure different optimization levels // and run different kinds of analysis depending on time budget. Accordingly, we need to set // IR levels/states (basic, optimized, etc.) and the // ENEBO: If we use a MT optimization mechanism we cannot mutate CFG // while another thread is using it. This may need to happen on a clone() // and we may need to update the method to return the new method. Also, // if this scope is held in multiple locations how do we update all references? CompilerPassScheduler scheduler = getManager().schedulePasses(); for (CompilerPass pass: scheduler) { pass.run(this); } }
private void runCompilerPasses() { // SSS FIXME: Why is this again? Document this weirdness! // Forcibly clear out the shared eval-scope variable allocator each time this method executes initEvalScopeVariableAllocator(true); // SSS FIXME: We should configure different optimization levels // and run different kinds of analysis depending on time budget. Accordingly, we need to set // IR levels/states (basic, optimized, etc.) and the // ENEBO: If we use a MT optimization mechanism we cannot mutate CFG // while another thread is using it. This may need to happen on a clone() // and we may need to update the method to return the new method. Also, // if this scope is held in multiple locations how do we update all references? CompilerPassScheduler scheduler = getManager().schedulePasses(); for (CompilerPass pass: scheduler) { pass.run(this); } }
private void runCompilerPasses(List<CompilerPass> passes, IGVDumper dumper) { // All passes are disabled in scopes where BEGIN and END scopes might // screw around with escaped variables. Optimizing for them is not // worth the effort. It is simpler to just go fully safe in scopes // influenced by their presence. if (isUnsafeScope()) { passes = getManager().getSafePasses(this); } if (dumper != null) dumper.dump(getCFG(), "Start"); CompilerPassScheduler scheduler = IRManager.schedulePasses(passes); for (CompilerPass pass : scheduler) { pass.run(this); if (dumper != null) dumper.dump(getCFG(), pass.getShortLabel()); } if (RubyInstanceConfig.IR_UNBOXING) { CompilerPass pass = new UnboxingPass(); pass.run(this); if (dumper != null) dumper.dump(getCFG(), pass.getShortLabel()); } if (dumper != null) dumper.close(); }
private void runCompilerPasses(List<CompilerPass> passes, IGVDumper dumper) { // All passes are disabled in scopes where BEGIN and END scopes might // screw around with escaped variables. Optimizing for them is not // worth the effort. It is simpler to just go fully safe in scopes // influenced by their presence. if (isUnsafeScope()) { passes = getManager().getSafePasses(this); } if (dumper != null) dumper.dump(getCFG(), "Start"); CompilerPassScheduler scheduler = IRManager.schedulePasses(passes); for (CompilerPass pass : scheduler) { pass.run(this); if (dumper != null) dumper.dump(getCFG(), pass.getShortLabel()); } if (RubyInstanceConfig.IR_UNBOXING) { CompilerPass pass = new UnboxingPass(); pass.run(this); if (dumper != null) dumper.dump(getCFG(), pass.getShortLabel()); } if (dumper != null) dumper.close(); }