Hi all.
I'm playing with GWT overlay types for learning better ways of overlaying and working with them more agile. In particular I found that JSO setters methods that return 'this' for method chaining are a good way of defining an object state in a single Java statement, just like they are done in JavaScript. I written about this in
http://cancerberonia.blogspot.com/2012/12/guidelines-for-writing-gwt-overlay-types.htmlThis setters methods look like this:
public native final MyJSO color(String val) /*-{
this["color"]=val;
return this;
}-*/;
So I can define an object in a single Java Statement like
MyJSO my1 = MyJSO.create().color("red").age(14);
I feel very confortable with that approach and using it on my GWT projects based on JSOs. But to my surprise (thanks to IRC user niloc132), these setters are not inlined in the GWT compiler JavaScript output. Please, read last part of my blog post "About Performance". For each setter a JavaScript function is defined and called: the JSNI code is not inlined. So this is not a zero overhead solution (as my libraries promise).
I tried different approachs for defining these setters, but with the same results in all cases. My question is, can I force the GWT compiler somehow to inline some of mine JSNI methods, perhaps with some annotation ? Do somebody have any suggestions for making setters returning 'this' to be inlined in javascript output instead of creating and calling javascript functions in javascript generated code ?
Regards and thanks in advance.