rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 1702 228f26fc1159
parent 1696 ce34fdc36fac
child 1704 2e69145b9feb
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sun Sep 14 22:33:35 2014 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Sep 23 21:52:27 2014 +0200
     1.3 @@ -378,9 +378,11 @@
     1.4          final LocalsMapper lmapper =
     1.5                  new LocalsMapper(stackMapIterator.getArguments());
     1.6  
     1.7 -        boolean obj = "java/lang/Object".equals(jc.getClassName());
     1.8 +        boolean defineProp = 
     1.9 +            "java/lang/Object".equals(jc.getClassName()) ||
    1.10 +            "java/lang/reflect/Array".equals(jc.getClassName());
    1.11          
    1.12 -        if (obj) {
    1.13 +        if (defineProp) {
    1.14              append("Object.defineProperty(").append(destObject).
    1.15              append(", '").append(name).append("', { configurable: true, writable: true, value: function(");
    1.16          } else {
    1.17 @@ -394,10 +396,11 @@
    1.18              append("  throw 'no code found for ")
    1.19                 .append(jc.getClassName()).append('.')
    1.20                 .append(m.getName()).append("';\n");
    1.21 -            if (obj) {
    1.22 -                append("}");
    1.23 +            if (defineProp) {
    1.24 +                append("}});");
    1.25 +            } else {
    1.26 +                append("};");
    1.27              }
    1.28 -            append("};");
    1.29              return;
    1.30          }
    1.31  
    1.32 @@ -1463,7 +1466,7 @@
    1.33          while (openBraces-- > 0) {
    1.34              append('}');
    1.35          }
    1.36 -        if (obj) {
    1.37 +        if (defineProp) {
    1.38              append("\n}});");
    1.39          } else {
    1.40              append("\n};");