Создание объектов в скомпилированном коде GWT - PullRequest
3 голосов
/ 19 января 2012

При просмотре моего скомпилированного кода 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 Ответ

1 голос
/ 19 января 2012

Насколько я помню, 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 не оптимизирует весь ваш код одинаково.Насколько я помню, он пытается максимально оптимизировать некоторые части, а для других - только базовую оптимизацию.

...