понимание вывода компилятора GWT - PullRequest
1 голос
/ 08 апреля 2011

Я не разработчик JS, но я пытаюсь понять, как код Java, преобразованный в JS компилятором GWT, находит причину увеличения памяти в нашем большом приложении.

Некоторое время я вижу некоторую переменную с "_", например

_ = com_google_gwt_event_shared_GwtEvent.prototype = new java_lang_Object;

Такого рода назначения во многих местах в коде. Что это значит ?

1 Ответ

3 голосов
/ 08 апреля 2011

Компилятор GWT моделирует иерархию типов Java, используя цепочки прототипов JavaScript .Символ _ используется в качестве глобальной временной переменной компилятором и короткими методами JSNI.В верхней области сгенерированного сценария вы должны увидеть что-то вроде

// Define the JS constructor(s) for the type
function com___GwtEvent() {}
// Inherit methods from the supertype by prototype chain
_ = com___GwtEvent.prototype = new java_lang_Object;
// Attach polymorphically-dispatched methods to the new type
_.someInstanceMethod = function(a,b,c){.....}
// Static-dispatch methods
function $someOtherMethod(this$static, d, e) {...}

. Где вы видите методы, имеющие параметр this$static, компилятор пришел к выводу, что выражение Java instance.someOtherMethod() не является полиморфным (возможно с помощью сжатия типа) и позволяет избежать издержек при поиске промежуточного символа во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...