# HG changeset patch # User Jaroslav Tulach # Date 1425035218 -3600 # Node ID 136787ac00d3a33e0526846ccabc5f292eaf8dac # Parent 3c23f0cebd32c15ed6dad7807fd31c7b28f69fe9 V8 has problems optimizing try/catch. Putting such construct into methods that is always called was certainly not the brightest idea. diff -r 3c23f0cebd32 -r 136787ac00d3 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Feb 27 10:52:26 2015 +0100 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Feb 27 12:06:58 2015 +0100 @@ -279,10 +279,7 @@ && (m.getAccess() & ACC_STATIC) == 0 && (m.getAccess() & ACC_PRIVATE) == 0) { final String mn = findMethodName(m, new StringBuilder()); - append("\n try {"); - append("\n if (!x['").append(mn).append("']) Object.defineProperty(x, '").append(mn).append("', { value : c['").append(mn).append("']});"); - append("\n } catch (ignore) {"); - append("\n }"); + append("\n if (!x['").append(mn).append("']) Object.defineProperty(x, '").append(mn).append("', { value : c['").append(mn).append("']});"); } } } @@ -292,11 +289,8 @@ requireReference(superInterface); } append("\n }"); - append("\n try {"); - append("\n Object.defineProperty(c, 'fillInstOf', { value: ").append(className).append("fillInstOf });"); - append("\n ").append(className).append("fillInstOf(c);"); - append("\n } catch (ignore) {"); - append("\n }"); + append("\n if (!c.hasOwnProperty('fillInstOf')) Object.defineProperty(c, 'fillInstOf', { value: ").append(className).append("fillInstOf });"); + append("\n ").append(className).append("fillInstOf(c);"); // obfuscationDelegate.exportJSProperty(this, "c", instOfName); append("\n CLS.$class = 'temp';"); append("\n CLS.$class = ");