rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
changeset 1774 a93a52b33474
parent 1772 e80693152d8b
child 1779 9d757281c666
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Jan 20 12:26:35 2015 +0100
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Tue Jan 20 17:23:12 2015 +0100
     1.3 @@ -2386,7 +2386,7 @@
     1.4          String type = jc.getClassName(indx);
     1.5          if (!type.startsWith("[")) {
     1.6              emitNoFlush(smapper, 
     1.7 -                 "if (@1 !== null && !@1['$instOf_@2']) throw vm.java_lang_ClassCastException(true);",
     1.8 +                 "if (@1 !== null && !@1['$instOf_@2']) vm.java_lang_Class(false).castEx();",
     1.9                   smapper.getT(0, VarType.REFERENCE, false), type.replace('/', '_'));
    1.10          } else {
    1.11              int cnt = 0;
    1.12 @@ -2396,12 +2396,12 @@
    1.13              if (type.charAt(cnt) == 'L') {
    1.14                  type = "vm." + mangleClassName(type.substring(cnt + 1, type.length() - 1));
    1.15                  emitNoFlush(smapper, 
    1.16 -                    "if (@1 !== null && !Array.prototype['isInstance__ZLjava_lang_Object_2ILjava_lang_Object_2'](@1, @3, @2)) throw vm.java_lang_ClassCastException(true);",
    1.17 +                    "if (@1 !== null && !Array.prototype['isInstance__ZLjava_lang_Object_2ILjava_lang_Object_2'](@1, @3, @2)) vm.java_lang_Class(false).castEx();",
    1.18                       smapper.getT(0, VarType.REFERENCE, false), type, "" + cnt
    1.19                  );
    1.20              } else {
    1.21                  emitNoFlush(smapper, 
    1.22 -                    "if (@1 !== null && !Array.prototype['isInstance__ZLjava_lang_Object_2Ljava_lang_String_2'](@1, '@2')) throw vm.java_lang_ClassCastException(true);",
    1.23 +                    "if (@1 !== null && !Array.prototype['isInstance__ZLjava_lang_Object_2Ljava_lang_String_2'](@1, '@2')) vm.java_lang_Class(false).castEx();",
    1.24                       smapper.getT(0, VarType.REFERENCE, false), type
    1.25                  );
    1.26              }