Author: [email protected]
Date: Wed May 20 14:35:08 2009
New Revision: 5447

Added:
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorder.java
       - copied, changed from r5414,  
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorderImpl.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorder.java
       - copied, changed from r5414,  
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorderImpl.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java
       - copied, changed from r5414,  
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorderImpl.java
Removed:
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/SplitPointRecorder.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/StoryRecorder.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorderImpl.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorderImpl.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorderImpl.java
Modified:
    branches/snapshot-2009.05.12-r5406/branch-info.txt
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/AbstractLinker.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/SyntheticArtifact.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/linker/SoycReportLinker.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
     
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java

Log:
Merging trunk c5445 into this branch.

Modified: branches/snapshot-2009.05.12-r5406/branch-info.txt
==============================================================================
--- branches/snapshot-2009.05.12-r5406/branch-info.txt  (original)
+++ branches/snapshot-2009.05.12-r5406/branch-info.txt  Wed May 20 14:35:08  
2009
@@ -6,3 +6,4 @@
  /branches/snapshot-2009.05.12-r5406 was created (r5412) as a straight copy  
from /trunk/@5406

  Merges:
+/trunk c5445 was merged into this branch

Modified:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/AbstractLinker.java
==============================================================================
---  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/AbstractLinker.java
       
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/AbstractLinker.java
       
Wed May 20 14:35:08 2009
@@ -38,7 +38,7 @@
     */
    protected final SyntheticArtifact emitBytes(TreeLogger logger, byte[]  
what,
        String partialPath) throws UnableToCompleteException {
-    return new SyntheticArtifact(logger, getClass(), partialPath, what);
+    return new SyntheticArtifact(getClass(), partialPath, what);
    }

    /**
@@ -53,7 +53,7 @@
     */
    protected final SyntheticArtifact emitBytes(TreeLogger logger, byte[]  
what,
        String partialPath, long lastModified) throws  
UnableToCompleteException {
-    return new SyntheticArtifact(logger, getClass(), partialPath, what,  
lastModified);
+    return new SyntheticArtifact(getClass(), partialPath, what,  
lastModified);
    }

    /**

Modified:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
==============================================================================
---  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
  
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/CompilationAnalysis.java
  
Wed May 20 14:35:08 2009
@@ -17,8 +17,6 @@

  import com.google.gwt.core.ext.Linker;

-import java.io.File;
-
  /**
   * Represents analysis data for a CompilationResult.
   */
@@ -31,17 +29,17 @@
    /**
     * @return a file of dependencies
     */
-  public abstract File getDepFile();
+  public abstract EmittedArtifact getDepFile();

    /**
     * @return a file of split points
     */
-  public abstract File getSplitPointsFile();
+  public abstract EmittedArtifact getSplitPointsFile();

    /**
     * @return a file of stories
     */
-  public abstract File getStoriesFile();
+  public abstract EmittedArtifact getStoriesFile();

    @Override
    public final int hashCode() {
@@ -50,9 +48,9 @@
      assert (getStoriesFile() != null);
      assert (getSplitPointsFile() != null);

-    return 17 * (37 + getDepFile().getName().hashCode())
-        + (37 + getStoriesFile().getName().hashCode())
-        + (37 + getSplitPointsFile().getName().hashCode());
+    return 17 * (37 + getDepFile().getPartialPath().hashCode())
+        + (37 + getStoriesFile().getPartialPath().hashCode())
+        + (37 + getSplitPointsFile().getPartialPath().hashCode());
    }

    @Override
@@ -64,15 +62,16 @@
        return 1;
      } else if ((getDepFile() != null) && (o.getDepFile() == null)) {
        return -1;
-    } else if (getDepFile().getName().compareTo(o.getDepFile().getName())  
== 0) {
+    } else if (getDepFile().getPartialPath().compareTo(
+        o.getDepFile().getPartialPath()) == 0) {
        if ((getStoriesFile() == null) && (o.getStoriesFile() == null)) {
          return 0;
        } else if ((getStoriesFile() == null) && (o.getStoriesFile() !=  
null)) {
          return 1;
        } else if ((getStoriesFile() != null) && (o.getStoriesFile() ==  
null)) {
          return -1;
-      } else if (getStoriesFile().getName().compareTo(
-          o.getStoriesFile().getName()) == 0) {
+      } else if (getStoriesFile().getPartialPath().compareTo(
+          o.getStoriesFile().getPartialPath()) == 0) {
          if ((getSplitPointsFile() == null) && (o.getSplitPointsFile() ==  
null)) {
            return 0;
          }
@@ -82,15 +81,16 @@
              && (o.getSplitPointsFile() == null)) {
            return -1;
          } else {
-          return getSplitPointsFile().getName().compareTo(
-              o.getSplitPointsFile().getName());
+          return getSplitPointsFile().getPartialPath().compareTo(
+              o.getSplitPointsFile().getPartialPath());
          }
        } else {
-        return getStoriesFile().getName().compareTo(
-            o.getStoriesFile().getName());
+        return getStoriesFile().getPartialPath().compareTo(
+            o.getStoriesFile().getPartialPath());
        }
      } else {
-      return getDepFile().getName().compareTo(o.getDepFile().getName());
+      return getDepFile().getPartialPath().compareTo(
+          o.getDepFile().getPartialPath());
      }
    }


Modified:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/SyntheticArtifact.java
==============================================================================
---  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/SyntheticArtifact.java
    
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/SyntheticArtifact.java
    
Wed May 20 14:35:08 2009
@@ -19,9 +19,14 @@
  import com.google.gwt.core.ext.TreeLogger;
  import com.google.gwt.core.ext.UnableToCompleteException;
  import com.google.gwt.dev.util.DiskCache;
+import com.google.gwt.dev.util.Util;

  import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
  import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
  import java.io.OutputStream;

  /**
@@ -31,14 +36,14 @@
    private static final DiskCache diskCache = new DiskCache();

    private final long lastModified;
-  private final long token;
+  private transient long token;

-  SyntheticArtifact(TreeLogger logger, Class<? extends Linker> linkerType,
+  public SyntheticArtifact(Class<? extends Linker> linkerType,
        String partialPath, byte[] data) {
-    this(logger, linkerType, partialPath, data,  
System.currentTimeMillis());
+    this(linkerType, partialPath, data, System.currentTimeMillis());
    }

-  SyntheticArtifact(TreeLogger logger, Class<? extends Linker> linkerType,
+  public SyntheticArtifact(Class<? extends Linker> linkerType,
        String partialPath, byte[] data, long lastModified) {
      super(linkerType, partialPath);
      assert data != null;
@@ -61,5 +66,18 @@
    public void writeTo(TreeLogger logger, OutputStream out)
        throws UnableToCompleteException {
      diskCache.writeTo(token, out);
+  }
+
+  private void readObject(ObjectInputStream stream) throws IOException,
+      ClassNotFoundException {
+    stream.defaultReadObject();
+    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+    Util.copyNoClose(stream, baos);
+    token = diskCache.writeByteArray(baos.toByteArray());
+  }
+
+  private void writeObject(ObjectOutputStream stream) throws IOException {
+    stream.defaultWriteObject();
+    diskCache.writeTo(token, stream);
    }
  }

Modified:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
==============================================================================
---  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
     
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationAnalysis.java
     
Wed May 20 14:35:08 2009
@@ -15,11 +15,9 @@
   */
  package com.google.gwt.core.ext.linker.impl;

-import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.UnableToCompleteException;
  import com.google.gwt.core.ext.linker.CompilationAnalysis;
-
-import java.io.File;
+import com.google.gwt.core.ext.linker.SyntheticArtifact;
+import com.google.gwt.core.linker.SoycReportLinker;

  /**
   * An implementation of CompilationAnalysis. This class transforms  
SourceInfos
@@ -29,48 +27,54 @@
  public class StandardCompilationAnalysis extends CompilationAnalysis {

    /**
+   * A SOYC artifact. The existence of this class is an implementation  
detail.
+   */
+  public static class SoycArtifact extends SyntheticArtifact {
+    public SoycArtifact(String partialPath, byte[] bytes) {
+      super(SoycReportLinker.class, partialPath, bytes);
+      setPrivate(true);
+    }
+  }
+
+  /**
     * File containing method-level control-flow dependencies (corresponding  
to
     * the current report).
     */
-  private File depFile;
+  private SoycArtifact depFile;

    /**
     * File containing split points.
     */
-  private File splitPointsFile;
+  private SoycArtifact splitPointsFile;

    /**
     * File containing stories.
     */
-  private File storiesFile;
+  private SoycArtifact storiesFile;

    /**
     * Constructed by PermutationCompiler.
     */
-  public StandardCompilationAnalysis(TreeLogger logger, File depFile,
-      File storiesFile, File splitPointsFile) throws  
UnableToCompleteException {
+  public StandardCompilationAnalysis(SoycArtifact dependencies,
+      SoycArtifact stories, SoycArtifact splitPoints) {
      super(StandardLinkerContext.class);
-    logger = logger.branch(TreeLogger.INFO, "Creating  
CompilationAnalysis");
-
-    this.depFile = depFile;
-    this.storiesFile = storiesFile;
-    this.splitPointsFile = splitPointsFile;
-
-    logger.log(TreeLogger.INFO, "Done");
+    this.depFile = dependencies;
+    this.storiesFile = stories;
+    this.splitPointsFile = splitPoints;
    }

    @Override
-  public File getDepFile() {
+  public SoycArtifact getDepFile() {
      return depFile;
    }

    @Override
-  public File getSplitPointsFile() {
+  public SoycArtifact getSplitPointsFile() {
      return splitPointsFile;
    }

    @Override
-  public File getStoriesFile() {
+  public SoycArtifact getStoriesFile() {
      return storiesFile;
    }
  }

Copied:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorder.java
  
(from r5414,  
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorderImpl.java)
==============================================================================
---  
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorderImpl.java
   
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/DependencyRecorder.java
        
Wed May 20 14:35:08 2009
@@ -13,7 +13,6 @@
   * License for the specific language governing permissions and limitations  
under
   * the License.
   */
-
  package com.google.gwt.core.ext.soyc.impl;

  import com.google.gwt.core.ext.TreeLogger;
@@ -23,8 +22,7 @@
  import com.google.gwt.dev.util.HtmlTextOutput;
  import com.google.gwt.util.tools.Utility;

-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.OutputStream;
  import java.io.OutputStreamWriter;
  import java.io.PrintWriter;
  import java.util.ArrayList;
@@ -33,13 +31,24 @@
  /**
   * The control-flow dependency recorder for SOYC.
   */
-public class DependencyRecorderImpl implements
+public class DependencyRecorder implements
      ControlFlowAnalyzer.DependencyRecorder {

+  /**
+   * Used to record dependencies of a program.
+   */
+  public static void recordDependencies(TreeLogger logger, OutputStream  
out,
+      JProgram jprogram) {
+    new DependencyRecorder().recordDependenciesImpl(logger, out, jprogram);
+  }
+
    private HtmlTextOutput htmlOut;
    private PrintWriter pw;
    private OutputStreamWriter writer;

+  private DependencyRecorder() {
+  }
+
    /**
     * Used to record the dependencies of a specific method.
     *
@@ -48,20 +57,14 @@
     */
    public void methodIsLiveBecause(JMethod liveMethod,
        ArrayList<JMethod> dependencyChain) {
-    printMethodDependency(liveMethod, dependencyChain);
+    printMethodDependency(dependencyChain);
    }

    /**
     * Used to record dependencies of a program.
-   *
-   * @param jprogram
-   * @param workDir
-   * @param permutationId
-   * @param logger
-   * @return The file that the dependencies are recorded in
     */
-  public File recordDependencies(JProgram jprogram, File workDir,
-      int permutationId, TreeLogger logger) {
+  protected void recordDependenciesImpl(TreeLogger logger, OutputStream  
out,
+      JProgram jprogram) {

      logger = logger.branch(TreeLogger.INFO,
          "Creating Dependencies file for SOYC");
@@ -69,12 +72,8 @@
      ControlFlowAnalyzer dependencyAnalyzer = new  
ControlFlowAnalyzer(jprogram);
      dependencyAnalyzer.setDependencyRecorder(this);

-    File appendDepFile = new File(workDir, "dependencies" + permutationId
-        + ".xml.gz");
      try {
-      FileOutputStream stream = new FileOutputStream(appendDepFile, true);
-      writer = new OutputStreamWriter(new  
GZIPOutputStream(stream), "UTF-8");
-      appendDepFile.getParentFile().mkdirs();
+      writer = new OutputStreamWriter(new GZIPOutputStream(out), "UTF-8");
        pw = new PrintWriter(writer);
        htmlOut = new HtmlTextOutput(pw, false);
      } catch (Throwable e) {
@@ -90,8 +89,6 @@
      Utility.close(writer);

      logger.log(TreeLogger.INFO, "Done");
-
-    return appendDepFile;
    }

    /**
@@ -100,8 +97,7 @@
     * @param liveMethod
     * @param dependencyChain
     */
-  private void printMethodDependency(JMethod liveMethod,
-      ArrayList<JMethod> dependencyChain) {
+  private void printMethodDependency(ArrayList<JMethod> dependencyChain) {
      String curLine;
      for (int i = dependencyChain.size() - 1; i >= 0; i--) {
        JMethod curMethod = dependencyChain.get(i);

Copied:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorder.java
  
(from r5414,  
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorderImpl.java)
==============================================================================
---  
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorderImpl.java
   
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/SplitPointRecorder.java
        
Wed May 20 14:35:08 2009
@@ -13,17 +13,14 @@
   * License for the specific language governing permissions and limitations  
under
   * the License.
   */
-
  package com.google.gwt.core.ext.soyc.impl;

  import com.google.gwt.core.ext.TreeLogger;
-import com.google.gwt.core.ext.soyc.SplitPointRecorder;
  import com.google.gwt.dev.jjs.ast.JProgram;
  import com.google.gwt.dev.util.HtmlTextOutput;
  import com.google.gwt.util.tools.Utility;

-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.OutputStream;
  import java.io.OutputStreamWriter;
  import java.io.PrintWriter;
  import java.util.Map;
@@ -32,37 +29,26 @@
  /**
   * Records split points to a file for SOYC reports.
   */
-public class SplitPointRecorderImpl implements SplitPointRecorder {
-
-  private FileOutputStream stream;
-  private OutputStreamWriter writer;
-  private PrintWriter pw;
-  private HtmlTextOutput htmlOut;
+public class SplitPointRecorder {

    /**
     * Used to record (runAsync) split points of a program.
     *
     * @param jprogram
-   * @param workDir
-   * @param permutationId
+   * @param out
     * @param logger
-   * @return The file that the dependencies are recorded in
     */
-  public File recordSplitPoints(JProgram jprogram, File workDir,
-      int permutationId, TreeLogger logger) {
+  public static void recordSplitPoints(JProgram jprogram, OutputStream out,
+      TreeLogger logger) {

      logger = logger.branch(TreeLogger.INFO,
          "Creating Split Point Map file for SOYC");

-    File splitPointsFile = new File(workDir, "splitPoints"
-        + Integer.toString(permutationId) + ".xml.gz");
      try {
-      stream = new FileOutputStream(splitPointsFile, true);
-      writer = new OutputStreamWriter(new  
GZIPOutputStream(stream), "UTF-8");
-      splitPointsFile.getParentFile().mkdirs();
-      pw = new PrintWriter(writer);
-      htmlOut = new HtmlTextOutput(pw, false);
-
+      OutputStreamWriter writer = new OutputStreamWriter(new  
GZIPOutputStream(
+          out), "UTF-8");
+      PrintWriter pw = new PrintWriter(writer);
+      HtmlTextOutput htmlOut = new HtmlTextOutput(pw, false);
        String curLine = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
        htmlOut.printRaw(curLine);
        htmlOut.newline();
@@ -107,7 +93,8 @@
      } catch (Throwable e) {
        logger.log(TreeLogger.ERROR, "Could not open dependency file.", e);
      }
+  }

-    return splitPointsFile;
+  private SplitPointRecorder() {
    }
  }

Copied:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java
  
(from r5414,  
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorderImpl.java)
==============================================================================
---  
/branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorderImpl.java
        
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java
     
Wed May 20 14:35:08 2009
@@ -13,7 +13,6 @@
   * License for the specific language governing permissions and limitations  
under
   * the License.
   */
-
  package com.google.gwt.core.ext.soyc.impl;

  import com.google.gwt.core.ext.TreeLogger;
@@ -22,7 +21,6 @@
  import com.google.gwt.core.ext.soyc.Member;
  import com.google.gwt.core.ext.soyc.Range;
  import com.google.gwt.core.ext.soyc.Story;
-import com.google.gwt.core.ext.soyc.StoryRecorder;
  import com.google.gwt.core.ext.soyc.Story.Origin;
  import com.google.gwt.dev.jjs.Correlation;
  import com.google.gwt.dev.jjs.SourceInfo;
@@ -30,13 +28,11 @@
  import com.google.gwt.dev.jjs.ast.JDeclaredType;
  import com.google.gwt.dev.jjs.ast.JField;
  import com.google.gwt.dev.jjs.ast.JMethod;
-import com.google.gwt.dev.jjs.ast.JProgram;
  import com.google.gwt.dev.js.ast.JsFunction;
  import com.google.gwt.dev.util.HtmlTextOutput;
  import com.google.gwt.util.tools.Utility;

-import java.io.File;
-import java.io.FileOutputStream;
+import java.io.OutputStream;
  import java.io.OutputStreamWriter;
  import java.io.PrintWriter;
  import java.util.Arrays;
@@ -54,7 +50,7 @@
  /**
   * Records {...@link Story}s to a file for SOYC.
   */
-public class StoryRecorderImpl implements StoryRecorder {
+public class StoryRecorder {

    /**
     * Associates a SourceInfo with a Range.
@@ -69,6 +65,14 @@
      }
    }

+  /**
+   * Used to record dependencies of a program.
+   */
+  public static void recordStories(TreeLogger logger, OutputStream out,
+      List<Map<Range, SourceInfo>> sourceInfoMaps, String[] js) {
+    new StoryRecorder().recordStoriesImpl(logger, out, sourceInfoMaps, js);
+  }
+
    private int curHighestFragment = 0;
    private HtmlTextOutput htmlOut;
    private String[] js;
@@ -92,33 +96,20 @@

    private Map<Story, Integer> storyIds = new HashMap<Story, Integer>();

-  private FileOutputStream stream;
-
    private OutputStreamWriter writer;

-  /**
-   * Used to record dependencies of a program.
-   *
-   * @param jprogram
-   * @param workDir
-   * @param permutationId
-   * @param logger
-   * @return The file that the dependencies are recorded in
-   */
-  public File recordStories(JProgram jprogram, File workDir, int  
permutationId,
-      TreeLogger logger, List<Map<Range, SourceInfo>> sourceInfoMaps,
-      String[] js) {
+  private StoryRecorder() {
+  }
+
+  protected void recordStoriesImpl(TreeLogger logger, OutputStream out,
+      List<Map<Range, SourceInfo>> sourceInfoMaps, String[] js) {

      logger = logger.branch(TreeLogger.INFO, "Creating Stories file for  
SOYC");

      this.js = js;

-    File storiesFile = new File(workDir, "stories"
-        + Integer.toString(permutationId) + ".xml.gz");
      try {
-      stream = new FileOutputStream(storiesFile, true);
-      writer = new OutputStreamWriter(new  
GZIPOutputStream(stream), "UTF-8");
-      storiesFile.getParentFile().mkdirs();
+      writer = new OutputStreamWriter(new GZIPOutputStream(out), "UTF-8");
        pw = new PrintWriter(writer);
        htmlOut = new HtmlTextOutput(pw, false);

@@ -185,8 +176,6 @@
      } catch (Throwable e) {
        logger.log(TreeLogger.ERROR, "Could not open dependency file.", e);
      }
-
-    return storiesFile;
    }

    private void analyzeFragment(MemberFactory memberFactory,

Modified:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/linker/SoycReportLinker.java
==============================================================================
---  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/linker/SoycReportLinker.java
         
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/core/linker/SoycReportLinker.java
         
Wed May 20 14:35:08 2009
@@ -20,52 +20,16 @@
  import com.google.gwt.core.ext.TreeLogger;
  import com.google.gwt.core.ext.UnableToCompleteException;
  import com.google.gwt.core.ext.linker.ArtifactSet;
-import com.google.gwt.core.ext.linker.EmittedArtifact;
  import com.google.gwt.core.ext.linker.LinkerOrder;
  import com.google.gwt.core.ext.linker.LinkerOrder.Order;
  import com.google.gwt.core.ext.linker.impl.StandardCompilationAnalysis;

-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
  /**
   * Converts SOYC report files into emitted private artifacts.
   */
  @LinkerOrder(Order.POST)
  public class SoycReportLinker extends Linker {

-  private static class SoycArtifact extends EmittedArtifact {
-    private final File file;
-
-    public SoycArtifact(String partialPath, File file) {
-      super(SoycReportLinker.class, partialPath);
-      this.file = file;
-    }
-
-    @Override
-    public InputStream getContents(TreeLogger logger)
-        throws UnableToCompleteException {
-      try {
-        return new FileInputStream(file);
-      } catch (IOException e) {
-        logger.log(TreeLogger.ERROR, "Unable to open file", e);
-        throw new UnableToCompleteException();
-      }
-    }
-
-    @Override
-    public long getLastModified() {
-      return file.lastModified();
-    }
-
-    @Override
-    public boolean isPrivate() {
-      return true;
-    }
-  }
-
    @Override
    public String getDescription() {
      return "Emit SOYC artifacts";
@@ -76,14 +40,9 @@
        ArtifactSet artifacts) throws UnableToCompleteException {
      ArtifactSet results = new ArtifactSet(artifacts);
      for (StandardCompilationAnalysis soycFiles :  
artifacts.find(StandardCompilationAnalysis.class)) {
-      File depFile = soycFiles.getDepFile();
-      results.add(new SoycArtifact(depFile.getName(), depFile));
-
-      File storiesFile = soycFiles.getStoriesFile();
-      results.add(new SoycArtifact(storiesFile.getName(), storiesFile));
-
-      File splitPointsFile = soycFiles.getSplitPointsFile();
-      results.add(new SoycArtifact(splitPointsFile.getName(),  
splitPointsFile));
+      results.add(soycFiles.getDepFile());
+      results.add(soycFiles.getStoriesFile());
+      results.add(soycFiles.getSplitPointsFile());
      }
      return results;
    }

Modified:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
==============================================================================
---  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
   
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
   
Wed May 20 14:35:08 2009
@@ -16,15 +16,14 @@
  package com.google.gwt.dev.jjs;

  import com.google.gwt.dev.util.arg.OptionAggressivelyOptimize;
+import com.google.gwt.dev.util.arg.OptionCompilationStateRetained;
  import com.google.gwt.dev.util.arg.OptionDisableCastChecking;
  import com.google.gwt.dev.util.arg.OptionDisableClassMetadata;
  import com.google.gwt.dev.util.arg.OptionDraftCompile;
  import com.google.gwt.dev.util.arg.OptionEnableAssertions;
-import com.google.gwt.dev.util.arg.OptionCompilationStateRetained;
  import com.google.gwt.dev.util.arg.OptionRunAsyncEnabled;
  import com.google.gwt.dev.util.arg.OptionScriptStyle;
  import com.google.gwt.dev.util.arg.OptionSoycEnabled;
-import com.google.gwt.dev.util.arg.OptionWorkDir;

  /**
   * Controls options for the {...@link JavaToJavaScriptCompiler}.
@@ -32,5 +31,5 @@
  public interface JJSOptions extends OptionAggressivelyOptimize,
      OptionDisableClassMetadata, OptionDisableCastChecking,  
OptionDraftCompile,
      OptionEnableAssertions, OptionRunAsyncEnabled, OptionScriptStyle,
-    OptionSoycEnabled, OptionCompilationStateRetained, OptionWorkDir {
+    OptionSoycEnabled, OptionCompilationStateRetained {
  }

Modified:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
==============================================================================
---  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
       
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
       
Wed May 20 14:35:08 2009
@@ -15,7 +15,6 @@
   */
  package com.google.gwt.dev.jjs;

-import java.io.File;
  import java.io.Serializable;

  /**
@@ -32,7 +31,6 @@
    private JsOutputOption output = JsOutputOption.OBFUSCATED;
    private boolean runAsyncEnabled = true;
    private boolean soycEnabled = false;
-  private File workDir;

    public JJSOptionsImpl() {
    }
@@ -51,17 +49,12 @@
      setOutput(other.getOutput());
      setRunAsyncEnabled(other.isRunAsyncEnabled());
      setSoycEnabled(other.isSoycEnabled());
-    setWorkDir(other.getWorkDir());
    }

    public JsOutputOption getOutput() {
      return output;
    }

-  public File getWorkDir() {
-    return workDir;
-  }
-
    public boolean isAggressivelyOptimize() {
      return aggressivelyOptimize;
    }
@@ -128,9 +121,5 @@

    public void setSoycEnabled(boolean enabled) {
      soycEnabled = enabled;
-  }
-
-  public void setWorkDir(File workDir) {
-    this.workDir = workDir;
    }
  }

Modified:  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
==============================================================================
---  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
     
(original)
+++  
branches/snapshot-2009.05.12-r5406/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
     
Wed May 20 14:35:08 2009
@@ -21,12 +21,11 @@
  import com.google.gwt.core.ext.linker.SymbolData;
  import com.google.gwt.core.ext.linker.impl.StandardCompilationAnalysis;
  import com.google.gwt.core.ext.linker.impl.StandardSymbolData;
+import  
com.google.gwt.core.ext.linker.impl.StandardCompilationAnalysis.SoycArtifact;
  import com.google.gwt.core.ext.soyc.Range;
-import com.google.gwt.core.ext.soyc.SplitPointRecorder;
-import com.google.gwt.core.ext.soyc.StoryRecorder;
-import com.google.gwt.core.ext.soyc.impl.DependencyRecorderImpl;
-import com.google.gwt.core.ext.soyc.impl.SplitPointRecorderImpl;
-import com.google.gwt.core.ext.soyc.impl.StoryRecorderImpl;
+import com.google.gwt.core.ext.soyc.impl.DependencyRecorder;
+import com.google.gwt.core.ext.soyc.impl.SplitPointRecorder;
+import com.google.gwt.core.ext.soyc.impl.StoryRecorder;
  import com.google.gwt.dev.PermutationResult;
  import com.google.gwt.dev.cfg.ModuleDef;
  import com.google.gwt.dev.jdt.RebindPermutationOracle;
@@ -112,7 +111,6 @@
  import org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;

  import java.io.ByteArrayOutputStream;
-import java.io.File;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.io.PrintWriter;
@@ -319,24 +317,31 @@

        PermutationResult toReturn = new PermutationResultImpl(js,
            makeSymbolMap(symbolTable));
+
        if (sourceInfoMaps != null) {
+        // Free up memory.
+        symbolTable = null;

+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
          // get method dependencies
-        DependencyRecorderImpl dr = new DependencyRecorderImpl();
-        File depFile = dr.recordDependencies(jprogram,  
options.getWorkDir(),
-            permutationId, logger);
-
-        StoryRecorder sr = new StoryRecorderImpl();
-        File storyFile = sr.recordStories(jprogram, options.getWorkDir(),
-            permutationId, logger, sourceInfoMaps, js);
-
-        SplitPointRecorder spr = new SplitPointRecorderImpl();
-        File splitPointsFile = spr.recordSplitPoints(jprogram,
-            options.getWorkDir(), permutationId, logger);
+        StoryRecorder.recordStories(logger, baos, sourceInfoMaps, js);
+        SoycArtifact stories = new SoycArtifact("stories" + permutationId
+            + ".xml.gz", baos.toByteArray());
+        // Free up memory.
+        js = null;
+
+        baos.reset();
+        DependencyRecorder.recordDependencies(logger, baos, jprogram);
+        SoycArtifact dependencies = new SoycArtifact("dependencies"
+            + permutationId + ".xml.gz", baos.toByteArray());
+
+        baos.reset();
+        SplitPointRecorder.recordSplitPoints(jprogram, baos, logger);
+        SoycArtifact splitPoints = new SoycArtifact("splitPoints"
+            + permutationId + ".xml.gz", baos.toByteArray());

          toReturn.getArtifacts().add(
-            new StandardCompilationAnalysis(logger, depFile, storyFile,
-                splitPointsFile));
+            new StandardCompilationAnalysis(dependencies, stories,  
splitPoints));
        }
        return toReturn;
      } catch (Throwable e) {

--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---

Reply via email to