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