rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
branchjdk8
changeset 1686 63ca617c8101
parent 1673 2d3d0b72af04
child 1688 e709c530c227
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sun Aug 17 19:58:05 2014 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sat Sep 13 18:14:55 2014 +0200
     1.3 @@ -258,7 +258,7 @@
     1.4              append("\n    ").append(destObject).append(".").append(mn).append(".cls = CLS;");
     1.5          }
     1.6          append("\n    c.constructor = CLS;");
     1.7 -        append("\n    function fillInstOf(x) {");
     1.8 +        append("\n    function ").append(className).append("fillInstOf(x) {");
     1.9          String instOfName = "$instOf_" + className;
    1.10          append("\n        Object.defineProperty(x, '").append(instOfName).append("', { value : true });");
    1.11          if (jc.isInterface()) {
    1.12 @@ -268,7 +268,7 @@
    1.13                          && (m.getAccess() & ACC_PRIVATE) == 0) {
    1.14                      final String mn = findMethodName(m, new StringBuilder());
    1.15                      append("\n        try {");
    1.16 -                    append("\n          Object.defineProperty(x, '").append(mn).append("', { value : c['").append(mn).append("']});");
    1.17 +                    append("\n          if (!x['").append(mn).append("']) Object.defineProperty(x, '").append(mn).append("', { value : c['").append(mn).append("']});");
    1.18                      append("\n        } catch (ignore) {");
    1.19                      append("\n        }");
    1.20                  }
    1.21 @@ -281,8 +281,8 @@
    1.22          }
    1.23          append("\n    }");
    1.24          append("\n    try {");
    1.25 -        append("\n      Object.defineProperty(c, 'fillInstOf', { value: fillInstOf });");
    1.26 -        append("\n      fillInstOf(c);");
    1.27 +        append("\n      Object.defineProperty(c, 'fillInstOf', { value: ").append(className).append("fillInstOf });");
    1.28 +        append("\n      ").append(className).append("fillInstOf(c);");
    1.29          append("\n    } catch (ignore) {");
    1.30          append("\n    }");
    1.31  //        obfuscationDelegate.exportJSProperty(this, "c", instOfName);