예제 #1
0
  private static void logInitialLoadSequence(
      TreeLogger logger, LinkedHashSet<JRunAsync> initialLoadSequence) {
    if (!logger.isLoggable(TreeLogger.TRACE)) {
      return;
    }

    StringBuilder message = new StringBuilder();
    message.append("Initial load sequence of split points: ");
    if (initialLoadSequence.isEmpty()) {
      message.append("(none)");
    } else {
      Collection<Integer> runAsyncIds =
          Collections2.transform(
              initialLoadSequence,
              new Function<JRunAsync, Integer>() {
                @Override
                public Integer apply(JRunAsync runAsync) {
                  return runAsync.getRunAsyncId();
                }
              });
      message.append(Joiner.on(", ").join(runAsyncIds));
    }

    logger.log(TreeLogger.TRACE, message.toString());
  }
예제 #2
0
파일: JProgram.java 프로젝트: imatellan/gwt
 public Collection<JType> getSubclasses(JType type) {
   return Collections2.transform(
       typeOracle.getSubTypeNames(type.getName()),
       new Function<String, JType>() {
         @Override
         public JType apply(String typeName) {
           return getFromTypeMap(typeName);
         }
       });
 }
예제 #3
0
 /**
  * Returns the collection of asyncs as a collection of singleton collections containing one async
  * each.
  */
 static Collection<Collection<JRunAsync>> getListOfLists(Collection<JRunAsync> runAsyncs) {
   return Collections2.transform(
       runAsyncs,
       new Function<JRunAsync, Collection<JRunAsync>>() {
         @Override
         public Collection<JRunAsync> apply(JRunAsync runAsync) {
           return Lists.newArrayList(runAsync);
         }
       });
 }
예제 #4
0
파일: JProgram.java 프로젝트: imatellan/gwt
 public void setInitialAsyncSequence(LinkedHashSet<JRunAsync> initialAsyncSequence) {
   assert this.initialAsyncSequence.isEmpty();
   initialFragmentIdSequence = Lists.newArrayList();
   // TODO(rluble): hack for now the initial fragments correspond to the initial runAsyncIds.
   initialFragmentIdSequence.addAll(
       Collections2.transform(
           initialAsyncSequence,
           new Function<JRunAsync, Integer>() {
             @Override
             public Integer apply(JRunAsync runAsync) {
               return runAsync.getRunAsyncId();
             }
           }));
   this.initialAsyncSequence = initialAsyncSequence;
 }
예제 #5
0
파일: JjsUtils.java 프로젝트: uddata/gwt
  /**
   * Creates a multi expression from a list of expressions, removing expressions that do not have
   * side effects if possible.
   */
  public static JExpression createOptimizedMultiExpression(
      boolean ignoringResult, List<JExpression> expressions) {

    int numberOfExpressions = expressions.size();
    JExpression result = expressions.get(numberOfExpressions - 1);

    numberOfExpressions = expressions.size();
    if (numberOfExpressions == 0) {
      return new JMultiExpression(SourceOrigin.UNKNOWN);
    }

    expressions =
        Lists.newArrayList(
            Collections2.filter(
                expressions.subList(0, numberOfExpressions - 1),
                Predicates.and(
                    Predicates.notNull(),
                    new Predicate<JExpression>() {
                      @Override
                      public boolean apply(JExpression expression) {
                        return expression.hasSideEffects();
                      }
                    })));

    if (result != null && (!ignoringResult || result.hasSideEffects())) {
      expressions.add(result);
    }

    if (expressions.size() == 1) {
      // Do not create a multi expression if it consists only of the result.
      return expressions.iterator().next();
    }

    SourceInfo info =
        expressions.size() > 0 ? expressions.get(0).getSourceInfo() : SourceOrigin.UNKNOWN;
    return new JMultiExpression(info, expressions);
  }