Examples of OptimizerStats


Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

      if (Thread.interrupted()) {
        optimizeEvent.end();
        throw new InterruptedException();
      }
      AstDumper.maybeDumpAST(jprogram);
      OptimizerStats stats =
          optimizeLoop("Pass " + counter, jprogram, options.isAggressivelyOptimize());
      allOptimizerStats.add(stats);
      if (!stats.didChange()) {
        break;
      }
    }

    if (options.isAggressivelyOptimize()) {
      // Just run it once, because it is very time consuming
      allOptimizerStats.add(DataflowOptimizer.exec(jprogram));
    }

    if (JProgram.isTracingEnabled()) {
      System.out.println("");
      System.out.println("                Java Optimization Stats");
      System.out.println("");
      for (OptimizerStats stats : allOptimizerStats) {
        System.out.println(stats.prettyPrint());
      }
    }

    optimizeEvent.end();
  }
View Full Code Here

Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

      if (Thread.interrupted()) {
        throw new InterruptedException();
      }
      Event optimizeJsEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE_JS);

      OptimizerStats stats = new OptimizerStats("Pass " + counter);

      // Remove unused functions, possible
      stats.add(JsStaticEval.exec(jsProgram));
      // Inline JavaScript function invocations
      stats.add(JsInliner.exec(jsProgram));
      // Remove unused functions, possible
      stats.add(JsUnusedFunctionRemover.exec(jsProgram));

      // Save the stats to print out after optimizers finish.
      allOptimizerStats.add(stats);

      optimizeJsEvent.end();
      int optimizationLevel = options.getOptimizationLevel();
      if ((optimizationLevel < OptionOptimize.OPTIMIZE_LEVEL_MAX && counter > optimizationLevel)
          || !stats.didChange()) {
        break;
      }
    }

    if (JProgram.isTracingEnabled()) {
      System.out.println("");
      System.out.println("               JavaScript Optimization Stats");
      System.out.println("");
      for (OptimizerStats stats : allOptimizerStats) {
        System.out.println(stats.prettyPrint());
      }
    }
  }
View Full Code Here

Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

    // Recompute clinits each time, they can become empty.
    jprogram.typeOracle.recomputeAfterOptimizations();
    // jprogram.methodOracle =
    // MethodOracleBuilder.buildMethodOracle(jprogram);
    OptimizerStats stats = new OptimizerStats(passName);

    // Remove unreferenced types, fields, methods, [params, locals]
    stats.add(Pruner.exec(jprogram, true).recordVisits(numNodes));

    // finalize locals, params, fields, methods, classes
    stats.add(Finalizer.exec(jprogram).recordVisits(numNodes));

    // rewrite non-polymorphic calls as static calls; update all call sites
    stats.add(MakeCallsStatic.exec(jprogram).recordVisits(numNodes));

    // type flow tightening
    // - fields, locals based on assignment
    // - params based on assignment and call sites
    // - method bodies based on return statements
    // - polymorphic methods based on return types of all implementors
    // - optimize casts and instance of
    stats.add(TypeTightener.exec(jprogram).recordVisits(numNodes));

    // tighten method call bindings
    stats.add(MethodCallTightener.exec(jprogram).recordVisits(numNodes));

    // dead code removal??
    stats.add(DeadCodeElimination.exec(jprogram).recordVisits(numNodes));

    // inlining
    stats.add(MethodInliner.exec(jprogram).recordVisits(numNodes));

    if (isAggressivelyOptimize) {
      // remove same parameters value
      stats.add(SameParameterValueOptimizer.exec(jprogram).recordVisits(numNodes));

      /*
       * Enum ordinalization.
       *
       * TODO(jbrosenberg): graduate this out of the 'isAggressivelyOptimize'
       * block, over time.
       */
      stats.add(EnumOrdinalizer.exec(jprogram).recordVisits(numNodes));
    }

    // prove that any types that have been culled from the main tree are
    // unreferenced due to type tightening?

View Full Code Here

Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

   * Static entry point used by JavaToJavaScriptCompiler.
   */
  public static OptimizerStats exec(JsProgram program, Collection<JsNode> toInline) {
    Event optimizeJsEvent = SpeedTracerLogger.start(
        CompilerEventType.OPTIMIZE_JS, "optimizer", NAME);
    OptimizerStats stats = execImpl(program, toInline);
    optimizeJsEvent.end("didChange", "" + stats.didChange());
    return stats;
  }
View Full Code Here

Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

    return v.containsNestedFunctions();
  }


  private static OptimizerStats execImpl(JsProgram program, Collection<JsNode> toInline) {
    OptimizerStats stats = new OptimizerStats(NAME);

    // We are not covering the whole AST, hence we will try to inline functions with a single call
    // site as well as those produced by native methods and their callers.
    SingleInvocationVisitor s = new SingleInvocationVisitor();
    s.accept(program);
    Set<JsNode> candidates = Sets.newLinkedHashSet(toInline);
    candidates.addAll(s.inliningCandidates());

    RedefinedFunctionCollector d = new RedefinedFunctionCollector();
    d.accept(program);

    RecursionCollector rc = new RecursionCollector();
    for (JsNode fn : candidates) {
      rc.accept(fn);
    }

    InliningVisitor v = new InliningVisitor(program, candidates);
    v.blacklist(d.getRedefined());
    v.blacklist(rc.getRecursive());
    // Do not accept among candidates as the list might get stale and contain nodes that are not
    // reachable from the AST. Instead filter within InliningVisitor.
    v.accept(program);

    if (v.didChange()) {
      stats.recordModified();
    }
    return stats;
  }
View Full Code Here

Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

        if (Thread.interrupted()) {
          throw new InterruptedException();
        }
        Event optimizeJsEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE_JS);

        OptimizerStats stats = new OptimizerStats("Pass " + counter);

        // Remove unused functions if possible.
        stats.add(JsStaticEval.exec(jsProgram));
        // Inline Js function invocations
        stats.add(JsInliner.exec(jsProgram, toInline));
        // Remove unused functions if possible.
        stats.add(JsUnusedFunctionRemover.exec(jsProgram));

        // Save the stats to print out after optimizers finish.
        allOptimizerStats.add(stats);

        optimizeJsEvent.end();
        if ((optimizationLevel < OptionOptimize.OPTIMIZE_LEVEL_MAX && counter > optimizationLevel)
            || !stats.didChange()) {
          break;
        }
      }

      if (optimizationLevel > OptionOptimize.OPTIMIZE_LEVEL_DRAFT) {
View Full Code Here

Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

      if (Thread.interrupted()) {
        optimizeEvent.end();
        throw new InterruptedException();
      }
      AstDumper.maybeDumpAST(jprogram);
      OptimizerStats stats = optimizeJavaOneTime("Pass " + passCount, nodeCount);
      allOptimizerStats.add(stats);
      lastNodeCount = nodeCount;
      nodeCount = jprogram.getNodeCount();

      float nodeChangeRate = stats.getNumMods() / (float) lastNodeCount;
      float sizeChangeRate = (lastNodeCount - nodeCount) / (float) lastNodeCount;
      if (nodeChangeRate <= minChangeRate && sizeChangeRate <= minChangeRate) {
        break;
      }
    }
View Full Code Here

Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

  private OptimizerStats optimizeJavaOneTime(String passName, int numNodes) {
    Event optimizeEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "phase", "loop");
    // Clinits might have become empty become empty.
    jprogram.typeOracle.recomputeAfterOptimizations(jprogram.getDeclaredTypes());
    OptimizerStats stats = new OptimizerStats(passName);
    stats.add(Pruner.exec(jprogram, true).recordVisits(numNodes));
    stats.add(Finalizer.exec(jprogram).recordVisits(numNodes));
    stats.add(MakeCallsStatic.exec(jprogram, options.shouldAddRuntimeChecks())
        .recordVisits(numNodes));
    stats.add(TypeTightener.exec(jprogram).recordVisits(numNodes));
    stats.add(MethodCallTightener.exec(jprogram).recordVisits(numNodes));
    // Note: Specialization should be done before inlining.
    stats.add(MethodCallSpecializer.exec(jprogram).recordVisits(numNodes));
    stats.add(DeadCodeElimination.exec(jprogram).recordVisits(numNodes));
    stats.add(MethodInliner.exec(jprogram).recordVisits(numNodes));
    if (options.shouldInlineLiteralParameters()) {
      stats.add(SameParameterValueOptimizer.exec(jprogram).recordVisits(numNodes));
    }
    if (options.shouldOrdinalizeEnums()) {
      stats.add(EnumOrdinalizer.exec(jprogram).recordVisits(numNodes));
    }
    optimizeEvent.end();
    return stats;
  }
View Full Code Here

Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

public class DataflowOptimizer {
  public static String NAME = DataflowOptimizer.class.getSimpleName();

  public static OptimizerStats exec(JProgram jprogram, JNode node) {
    Event optimizeEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", NAME);
    OptimizerStats stats = new DataflowOptimizer(jprogram).execImpl(node);
    optimizeEvent.end();
    return stats;
  }
View Full Code Here

Examples of com.google.gwt.dev.jjs.impl.OptimizerStats

  }

  private OptimizerStats execImpl(JNode node) {
    DataflowOptimizerVisitor visitor = new DataflowOptimizerVisitor();
    visitor.accept(node);
    return new OptimizerStats(NAME).recordModified(visitor.getNumMods());
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.