我注意到在浏览我编译的GWT代码时,有很多很多调用空的$$ init_nn函数,例如下面的$$ init_1005有一个空的函数体。最初在$$ init_1005中有一些代码被优化了吗?它现在用于任何目的吗?空函数和对它们的调用是否可以消除?
由于
function $$init_1005() {
}
...
function TreeSet_0(c){
AbstractSet_0.call(this);
$$init_1005(); // <-- Call to empty function
isNull(c)?(this.map = new TreeMap_0):(this.map = new TreeMap_1(c));
}
答案 0 :(得分:1)
据我记忆,GWT使用$$ init_函数初始化对象字段,直接在声明时初始化 例如。为:
public class Test {
final String value = "1";
final String value2= "2";
}
GWT将创建一个这样的函数:
function $$init_55(this$static) {
this$static.value = "1";
this$static.value2 = "2";
}
如果它是空的,通常它总是内嵌或删除,但如果你关闭优化(例如flags -optimize 0或-draftCompile)它将保留在那里。
其他一个可能的原因可能是GWT没有以相同的方式优化所有代码。据我记得,它试图尽可能地优化某些部分,而对于其他部分,它只进行一些基本的优化。