Reviewers: robertvawter,

Description:
Wrap GWT.runAsync() entry points with $entry .


Please review this at http://gwt-code-reviews.appspot.com/706801/show

Affected files:
  M dev/core/src/com/google/gwt/dev/jjs/impl/FragmentExtractor.java
  M user/src/com/google/gwt/core/client/impl/CrossSiteLoadingStrategy.java
  M user/src/com/google/gwt/core/client/impl/XhrLoadingStrategy.java


Index: dev/core/src/com/google/gwt/dev/jjs/impl/FragmentExtractor.java
===================================================================
--- dev/core/src/com/google/gwt/dev/jjs/impl/FragmentExtractor.java (revision 8393) +++ dev/core/src/com/google/gwt/dev/jjs/impl/FragmentExtractor.java (working copy)
@@ -226,7 +226,7 @@
       SourceInfo sourceInfo = jsprogram.getSourceInfo().makeChild(
           FragmentExtractor.class, "call to entry function " + splitPoint);
       JsInvocation call = new JsInvocation(sourceInfo);
-      call.setQualifier(name.makeRef(sourceInfo));
+      call.setQualifier(wrapWithEntry(name.makeRef(sourceInfo)));
       callStats.add(call.makeStmt());
     }
     return callStats;
@@ -244,7 +244,7 @@
         FragmentExtractor.class,
         "call to browserLoaderLeftoversFragmentHasLoaded ");
     JsInvocation call = new JsInvocation(sourceInfo);
-    call.setQualifier(loadedMethodName.makeRef(sourceInfo));
+    call.setQualifier(wrapWithEntry(loadedMethodName.makeRef(sourceInfo)));
List<JsStatement> newStats = Collections.<JsStatement> singletonList(call.makeStmt());
     return newStats;
   }
@@ -630,4 +630,15 @@
     return null;
   }

+  /**
+   * Wrap an expression with a call to $entry.
+   */
+  private JsInvocation wrapWithEntry(JsExpression exp) {
+    SourceInfo sourceInfo = exp.getSourceInfo().makeChild(
+        FragmentExtractor.class, "wrapping with a call to $entry");
+    JsInvocation call = new JsInvocation(sourceInfo);
+    call.setQualifier(new JsNameRef(sourceInfo, "$entry"));
+    call.getArguments().add(exp);
+    return call;
+  }
 }
Index: user/src/com/google/gwt/core/client/impl/CrossSiteLoadingStrategy.java
===================================================================
--- user/src/com/google/gwt/core/client/impl/CrossSiteLoadingStrategy.java (revision 8393) +++ user/src/com/google/gwt/core/client/impl/CrossSiteLoadingStrategy.java (working copy)
@@ -104,8 +104,10 @@
@com.google.gwt.core.client.impl.CrossSiteLoadingStrategy::clearOnSuccess(*)(fragment); @com.google.gwt.core.client.impl.CrossSiteLoadingStrategy::clearCallbacks(*)(tag);
        head.removeChild(tag);
- loadfinishedhandl...@com.google.gwt.core.client.impl.asyncfragmentloader.loadterminatedhandler::loadTerminated(*)(
-         exception);
+       function callLoadTerminated() {
+ loadfinishedhandl...@com.google.gwt.core.client.impl.asyncfragmentloader.loadterminatedhandler::loadTerminated(*)(exception);
+       }
+       $entry(callLoadTerminated)();
      }
    }-*/;

Index: user/src/com/google/gwt/core/client/impl/XhrLoadingStrategy.java
===================================================================
--- user/src/com/google/gwt/core/client/impl/XhrLoadingStrategy.java (revision 8393) +++ user/src/com/google/gwt/core/client/impl/XhrLoadingStrategy.java (working copy)
@@ -199,7 +199,7 @@
     function loadFailed(e) {
loaderrorhandl...@com.google.gwt.core.client.impl.asyncfragmentloader$loadterminatedhandler::loadTerminated(*)(e);
     }
-    return __gwtStartLoadingFragment(fragment, loadFailed);
+    return __gwtStartLoadingFragment(fragment, $entry(loadFailed));
   }-*/;

   /**


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

Reply via email to