public boolean canReceiveNonlocalReturns() { if (this.canReceiveNonlocalReturns) { return true; } boolean canReceiveNonlocalReturns = false; for (IRClosure cl : getClosures()) { if (cl.hasNonlocalReturns || cl.canReceiveNonlocalReturns()) { canReceiveNonlocalReturns = true; } } return canReceiveNonlocalReturns; }
public boolean canReceiveNonlocalReturns() { if (this.canReceiveNonlocalReturns) { return true; } boolean canReceiveNonlocalReturns = false; for (IRClosure cl : getClosures()) { if (cl.hasNonlocalReturns || cl.canReceiveNonlocalReturns()) { canReceiveNonlocalReturns = true; } } return canReceiveNonlocalReturns; }
public boolean usesLocalVariable(Variable v) { if (usedLocalVars == null) setUpUseDefLocalVarMaps(); if (usedLocalVars.contains(v)) return true; for (IRClosure cl : getClosures()) { if (cl.usesLocalVariable(v)) return true; } return false; }
public boolean definesLocalVariable(Variable v) { if (definedLocalVars == null) setUpUseDefLocalVarMaps(); if (definedLocalVars.contains(v)) return true; for (IRClosure cl : getClosures()) { if (cl.definesLocalVariable(v)) return true; } return false; }
public boolean definesLocalVariable(Variable v) { if (definedLocalVars == null) setUpUseDefLocalVarMaps(); if (definedLocalVars.contains(v)) return true; for (IRClosure cl : getClosures()) { if (cl.definesLocalVariable(v)) return true; } return false; }
public boolean usesLocalVariable(Variable v) { if (usedLocalVars == null) setUpUseDefLocalVarMaps(); if (usedLocalVars.contains(v)) return true; for (IRClosure cl : getClosures()) { if (cl.usesLocalVariable(v)) return true; } return false; }
public boolean usesLocalVariable(Variable v) { if (usedLocalVars == null) setUpUseDefLocalVarMaps(); if (usedLocalVars.contains(v)) return true; for (IRClosure cl : getClosures()) { if (cl.usesLocalVariable(v)) return true; } return false; }
public boolean definesLocalVariable(Variable v) { if (definedLocalVars == null) setUpUseDefLocalVarMaps(); if (definedLocalVars.contains(v)) return true; for (IRClosure cl : getClosures()) { if (cl.definesLocalVariable(v)) return true; } return false; }
public boolean usesLocalVariable(Variable v) { if (usedLocalVars == null) setUpUseDefLocalVarMaps(); if (usedLocalVars.contains(v)) return true; for (IRClosure cl : getClosures()) { if (cl.usesLocalVariable(v)) return true; } return false; }
public boolean definesLocalVariable(Variable v) { if (definedLocalVars == null) setUpUseDefLocalVarMaps(); if (definedLocalVars.contains(v)) return true; for (IRClosure cl : getClosures()) { if (cl.definesLocalVariable(v)) return true; } return false; }
private void emitClosures(IRScope s, boolean print) { // Emit code for all nested closures for (IRClosure c: s.getClosures()) { c.setHandle(emitClosure(c, print)); } }
@Override public Object execute(IRScope s, Object... data) { for (IRClosure c: s.getClosures()) { run(c, true); } optimizeTmpVars(s); optimizedTempVars = true; return null; }
@Override public Object execute(IRScope scope, Object... data) { ((LiveVariablesProblem) data[0]).markDeadInstructions(); for (IRClosure cl: scope.getClosures()) { run(cl, true); } return true; }
@Override public Object execute(IRScope s, Object... data) { for (IRClosure c: s.getClosures()) { run(c, true); } optimizeTmpVars(s); optimizedTempVars = true; return null; }
private void emitClosures(IRScope s, boolean print) { // Emit code for all nested closures for (IRClosure c: s.getClosures()) { c.setHandle(emitClosure(c, print)); } }
@Override public Object execute(IRScope scope, Object... data) { ((LiveVariablesProblem) data[0]).markDeadInstructions(); for (IRClosure cl: scope.getClosures()) { run(cl, true); } return true; }
@Override public Object execute(IRScope s, Object... data) { // This let us compute execute scope flags for a method based on what all nested closures do for (IRClosure c: s.getClosures()) { run(c, true); } for (BasicBlock b: ((CFG) data[0]).getBasicBlocks()) { runLocalOptsOnInstrList(s, b.getInstrs().listIterator(), false); } // Only after running local opts, compute various execution scope flags s.computeScopeFlags(); // Mark done locallyOptimized = true; return null; }
@Override public Object execute(IRScope s, Object... data) { // This let us compute execute scope flags for a method based on what all nested closures do for (IRClosure c: s.getClosures()) { run(c, true); } for (BasicBlock b: ((CFG) data[0]).getBasicBlocks()) { runLocalOptsOnInstrList(s, b.getInstrs().listIterator(), false); } // Only after running local opts, compute various execution scope flags s.computeScopeFlags(); // Mark done locallyOptimized = true; return null; }
/** Run any necessary passes to get the IR ready for compilation (AOT and/or JIT) */ public synchronized BasicBlock[] prepareForCompilation() { if (optimizedInterpreterContext != null && optimizedInterpreterContext.buildComplete()) { return optimizedInterpreterContext.getLinearizedBBList(); } // Don't run if same method was queued up in the tiny race for scheduling JIT/Full Build OR // for any nested closures which got a a fullInterpreterContext but have not run any passes // or generated instructions. if (fullInterpreterContext != null && fullInterpreterContext.buildComplete()) return fullInterpreterContext.getLinearizedBBList(); for (IRScope scope: getClosures()) { scope.prepareForCompilation(); } prepareFullBuildCommon(); runCompilerPasses(getManager().getJITPasses(this), dumpToIGV()); BasicBlock[] bbs = fullInterpreterContext.linearizeBasicBlocks(); return bbs; }
/** Run any necessary passes to get the IR ready for compilation (AOT and/or JIT) */ public synchronized BasicBlock[] prepareForCompilation() { if (optimizedInterpreterContext != null && optimizedInterpreterContext.buildComplete()) { return optimizedInterpreterContext.getLinearizedBBList(); } // Don't run if same method was queued up in the tiny race for scheduling JIT/Full Build OR // for any nested closures which got a a fullInterpreterContext but have not run any passes // or generated instructions. if (fullInterpreterContext != null && fullInterpreterContext.buildComplete()) return fullInterpreterContext.getLinearizedBBList(); for (IRScope scope: getClosures()) { scope.prepareForCompilation(); } prepareFullBuildCommon(); runCompilerPasses(getManager().getJITPasses(this), dumpToIGV()); BasicBlock[] bbs = fullInterpreterContext.linearizeBasicBlocks(); return bbs; }