I've done a little more experimentation and have determined two other variables that have to both be true in order for us to see this problem. First, we need to be using soft-permutations. In production, we build separate permutations but our dev env combines them altogether. Second, in production, we have entirely separate pages (different urls) with completely separate GWT modules/entry points compiled on their own (that share a common module). Because building a bunch of separate modules is slow, in our dev env, we have a super-module that inherits all the other ones and merges them all into one giant module.
-- In looking at the resulting cache.html file, I can see that in our dev env, we end up with multiple <script> blocks in the same file and each of them has as extra braces that I think may cause this scope change you referenced above.
<script><!--
{
function function1() {....}
...
}
--></script>
Oddly each of these blocks are almost the same number of lines of code (about 75k-80k LOC). It might be split by method count. I'm guessing there's some limit in some browsers and with soft permutations, GWT is having to pick the lowest common denominator.
So building all the pages together results in one giant cache.html file (about 500k LOC with a PRETTY compile). However, if we continue to build the giant page but turn off the soft-permutations, for some reason, the extra braces in the script blocks go away (and in the Safari permutation there's a lot more script blocks). So we have to build the giant page *and* use soft-permutations in order to have problems. I we change either one of those, then we no longer have the problems with the application. And maybe it takes a very large project to hit whatever the cause is which might explain why there aren't more reports of problems. Also, if we manually remove those extra braces from the file, the problem goes away.
So I'm thinking that there's some trigger in the compiler whether it's based on soft permutations or some limit on JS size that causes it to emit these extra braces into the JS and that (I'm guessing) is what causes this sloppy function behavior.
If there is a fix for this in later versions of GWT, I hope it takes into account very large projects.
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment