diff -r 81926ff11587 -r 8ac637d7d62a rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Thu May 29 09:57:01 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Jun 22 00:09:56 2014 +0200 @@ -260,15 +260,18 @@ append("\n c.constructor = CLS;"); append("\n function fillInstOf(x) {"); String instOfName = "$instOf_" + className; - append("\n x['").append(instOfName).append("'] = true;"); + append("\n Object.defineProperty(x, '").append(instOfName).append("', { value : true });"); for (String superInterface : jc.getSuperInterfaces()) { String intrfc = superInterface.replace('/', '_'); append("\n vm.").append(intrfc).append("(false)['fillInstOf'](x);"); requireReference(superInterface); } append("\n }"); - append("\n c['fillInstOf'] = fillInstOf;"); - append("\n fillInstOf(c);"); + append("\n try {"); + append("\n Object.defineProperty(c, 'fillInstOf', { value: fillInstOf });"); + append("\n fillInstOf(c);"); + append("\n } catch (ignore) {"); + append("\n }"); // obfuscationDelegate.exportJSProperty(this, "c", instOfName); append("\n CLS.$class = 'temp';"); append("\n CLS.$class = ");