Bck2Brwsr 0.10
From APIDesign
(Difference between revisions)
Line 22: | Line 22: | ||
} | } | ||
</source> | </source> | ||
+ | |||
+ | My experience from implementing lambdas in [[Bck2Brwsr]] [[VM]] was so horrible that I had to express my hate of [[invokeDynamic]] in a [[InvokeDynamic|dedicated essay]]. Such instruction should have never be addeded in [[JVM]] specification! | ||
Support for [[JDK]]8 defender and interface static methods. In the following example the method '''defaultValue''' properly returns ''42'' in [[Bck2Brwsr 0.10]]: | Support for [[JDK]]8 defender and interface static methods. In the following example the method '''defaultValue''' properly returns ''42'' in [[Bck2Brwsr 0.10]]: |
Revision as of 19:53, 14 September 2014
Using Object.defineProperty to make sure the JavaScript Object has all the methods of Object, while those methods do not show up during iteration
for (var p in anObject) { console.log('A prop found ' + p); }
The ahead-of-time mode has support for JDK8's Lambdas (thanks to RetroLambda project). Following example properly return "XXXXXXXXXX" in Bck2Brwsr 0.10 when compound methods is called:
private static void fewTimes(Runnable r, int cnt) { while (cnt-- > 0) { r.run(); } } public static String compound() { StringBuilder sb = new StringBuilder(); fewTimes(() -> sb.append('X'), 10); return sb.toString(); }
My experience from implementing lambdas in Bck2Brwsr VM was so horrible that I had to express my hate of invokeDynamic in a dedicated essay. Such instruction should have never be addeded in JVM specification!
Support for JDK8 defender and interface static methods. In the following example the method defaultValue properly returns 42 in Bck2Brwsr 0.10:
public interface Value { public static int staticValue(Value v) { return v.value(); } public default int value() { return 42; } public static int defaultValue() { return staticValue(new Value() {}); } }