在编译的GWT代码中实例化对象

时间:2012-01-18 20:00:44

标签: javascript gwt compiler-optimization

我注意到在浏览我编译的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));
}

1 个答案:

答案 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没有以相同的方式优化所有代码。据我记得,它试图尽可能地优化某些部分,而对于其他部分,它只进行一些基本的优化。