Let Closure Compiler knows CodeSplitter2 shuffled the fragment ordering

Review at http://gwt-code-reviews.appspot.com/1645803

Review by: johnlenz@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10893 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/js/ClosureJsRunner.java b/dev/core/src/com/google/gwt/dev/js/ClosureJsRunner.java
index 0a16f7a..b14c8a1 100644
--- a/dev/core/src/com/google/gwt/dev/js/ClosureJsRunner.java
+++ b/dev/core/src/com/google/gwt/dev/js/ClosureJsRunner.java
@@ -16,6 +16,7 @@
 
 import com.google.gwt.dev.jjs.JsOutputOption;
 import com.google.gwt.dev.jjs.ast.JProgram;
+import com.google.gwt.dev.jjs.impl.CodeSplitter2.FragmentPartitioningResult;
 import com.google.gwt.dev.js.ast.JsProgram;
 import com.google.gwt.dev.js.ast.JsProgramFragment;
 import com.google.gwt.thirdparty.guava.common.base.Preconditions;
@@ -215,6 +216,7 @@
   private void computeFragmentMap(JProgram jprogram, JsProgram jsProgram) {
     int fragments = jsProgram.getFragmentCount();
     List<Integer> initSeq = jprogram.getSplitPointInitialSequence();
+    FragmentPartitioningResult partitionResult = jprogram.getFragmentPartitioningResult();
 
     //
     // The fragments are expected in a specific order:
@@ -237,12 +239,20 @@
 
     // Then come the specified load order sequence
     for (int i = 0; i < initSeq.size(); i++) {
-      closureModuleSequenceMap[initSeq.get(i)] = module++;
+      int initSeqNum = initSeq.get(i);
+      if (partitionResult != null) {
+        initSeqNum = partitionResult.getFragmentFromSplitPoint(initSeqNum);
+      }
+      closureModuleSequenceMap[initSeqNum] = module++;
     }
 
     // Then the leftovers fragments:
     if (fragments > 1) {
-      closureModuleSequenceMap[fragments - 1] = module++;
+      int leftoverIndex = fragments - 1;
+      if (partitionResult != null) {
+        leftoverIndex = partitionResult.getLeftoverFragmentIndex();
+      }
+      closureModuleSequenceMap[leftoverIndex] = module++;
     }
 
     // Finally, the exclusive fragments.