instanceOf can also be handled on the level of prototype
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Fri, 28 Sep 2012 08:00:05 +0200
changeset 40a36c17ff6331
parent 39 0c5879b7a1a4
child 41 db31d4001c21
instanceOf can also be handled on the level of prototype
vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
     1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Fri Sep 28 07:55:15 2012 +0200
     1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Fri Sep 28 08:00:05 2012 +0200
     1.3 @@ -95,10 +95,6 @@
     1.4                  out.append("\n  this." + v.getName() + " = 0;");
     1.5              }
     1.6          }
     1.7 -        out.append("\n  this.$instOf_").append(className).append(" = true;");
     1.8 -        for (ClassName superInterface : jc.getInterfaces()) {
     1.9 -            out.append("\n  this.$instOf_").append(superInterface.getInternalName().replace('/', '_')).append(" = true;");
    1.10 -        }
    1.11          out.append("\n}");
    1.12          ClassName sc = jc.getSuperClass();
    1.13          if (sc != null) {
    1.14 @@ -110,6 +106,10 @@
    1.15                  compiler.generateMethodReference("\n" + className + ".prototype.", m);
    1.16              }
    1.17          }
    1.18 +        out.append("\n" + className + ".prototype.$instOf_").append(className).append(" = true;");
    1.19 +        for (ClassName superInterface : jc.getInterfaces()) {
    1.20 +            out.append("\n" + className + ".prototype.$instOf_").append(superInterface.getInternalName().replace('/', '_')).append(" = true;");
    1.21 +        }
    1.22          for (String init : toInitilize) {
    1.23              out.append("\n").append(init).append("();");
    1.24          }