2012-01-18 7 views
3

コンパイル済みのGWTコードを参照すると、$$ init_1005に空の関数本体がある以下のような空の$$ init_nn関数が多数呼び出されています。元々$$ init_1005に最適化されたコードがありましたか?今はどんな目的にも役立っていますか?空の関数とその呼び出しを排除できますか?私の知る限り、彼らは、例えば宣言 で直接初期化されると、オブジェクトのフィールドを初期化するために$$ init_機能を使用して、GWTを覚えているよう
コンパイル済みGWTコード内のオブジェクトのインスタンス化

おかげ

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

PRETTYでコンパイルするときは、最適化をすべて有効にしてください。デフォルトでは、コンパイラはPRETTY形式の最適化レベルを下げます。 –

答えて

1

以下のために:それが空の場合

function $$init_55(this$static) { 
this$static.value = "1"; 
this$static.value2 = "2"; 
} 

通常それが並んで-または削除常にですが、オフにした場合の最適化(例えばフラグは0を-optimize:

public class Test { 
final String value = "1"; 
final String value2= "2"; 
} 

GWTは、このような関数が作成されます。または-draftCompile)それはそこにとどまります。

GWTがすべてのコードを同じ方法で最適化していない可能性があります。私が覚えている限り、できるだけハードな部分を最適化しようとしているのですが、他の部分では基本的な最適化しか行いません。

+0

スタイルをPRETTYに設定すると、ほとんどの場合最適化がオフになり、後のバグが最適化されていない限り、読みやすくなります。 –

+1

GWTプロジェクト(GWT 2.4.0)で試したところ、$私は、フラグ-draftCompileまたは-optimize 0を使用しない限り、コンパイル済みJSの$ initを有効にします。PRETTYモードではいくつかの最適化がオフになっていますが、通常、デッドコードの削除とインライン化はPRETTYモードでもOBFUSCATEDモードと同じです。少なくとも私はこの最適化でいくつかのバグを見つけたとき、私はPRETTYモードとOBFUSCATEDモードの両方でそれらを見つけました。 – jusio

関連する問題