# HG changeset patch # User Jaroslav Tulach # Date 1411716109 -7200 # Node ID 65c6f805797fccf5179950b4ef431b35f1d96f3a # Parent e74a1895f07993dd3b990117e7d19d1727379e6f If class initializer is defined via Object.defineProperty call it by name diff -r e74a1895f079 -r 65c6f805797f rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Sep 26 08:28:11 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Fri Sep 26 09:21:49 2014 +0200 @@ -355,10 +355,14 @@ return jsb; } final String mn = findMethodName(m, new StringBuilder()); + boolean defineProp = generateMethod(destObject, mn, m); if (mn.equals("class__V")) { - toInitilize.add(accessClass(className(jc)) + "(false)." + mn); + if (defineProp) { + toInitilize.add(accessClass(className(jc)) + "(false)['" + mn + "']"); + } else { + toInitilize.add(accessClass(className(jc)) + "(false)." + mn); + } } - generateMethod(destObject, mn, m); return mn; } @@ -372,7 +376,7 @@ return mn; } - private void generateMethod(String destObject, String name, MethodData m) + private boolean generateMethod(String destObject, String name, MethodData m) throws IOException { final StackMapIterator stackMapIterator = m.createStackMapIterator(); TrapDataIterator trap = m.getTrapDataIterator(); @@ -402,7 +406,7 @@ } else { append("};"); } - return; + return defineProp; } final StackMapper smapper = new StackMapper(); @@ -1472,6 +1476,7 @@ } else { append("\n};"); } + return defineProp; } private int generateIf(StackMapper mapper, byte[] byteCodes,