1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Jun 22 00:09:56 2014 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Jun 22 17:19:16 2014 +0200
1.3 @@ -365,7 +365,14 @@
1.4 final LocalsMapper lmapper =
1.5 new LocalsMapper(stackMapIterator.getArguments());
1.6
1.7 - append(destObject).append(".").append(name).append(" = function(");
1.8 + boolean obj = "java/lang/Object".equals(jc.getClassName());
1.9 +
1.10 + if (obj) {
1.11 + append("Object.defineProperty(").append(destObject).
1.12 + append(", '").append(name).append("', { configurable: true, writable: true, value: function(");
1.13 + } else {
1.14 + append(destObject).append(".").append(name).append(" = function(");
1.15 + }
1.16 lmapper.outputArguments(this, m.isStatic());
1.17 append(") {").append("\n");
1.18
1.19 @@ -374,6 +381,9 @@
1.20 append(" throw 'no code found for ")
1.21 .append(jc.getClassName()).append('.')
1.22 .append(m.getName()).append("';\n");
1.23 + if (obj) {
1.24 + append("}");
1.25 + }
1.26 append("};");
1.27 return;
1.28 }
1.29 @@ -1393,7 +1403,11 @@
1.30 while (openBraces-- > 0) {
1.31 append('}');
1.32 }
1.33 - append("\n};");
1.34 + if (obj) {
1.35 + append("\n}});");
1.36 + } else {
1.37 + append("\n};");
1.38 + }
1.39 }
1.40
1.41 private int generateIf(StackMapper mapper, byte[] byteCodes,