diff -r 973e52d4cabb -r 80851e48a68f rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Tue Jun 07 06:20:20 2016 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Jun 08 06:50:38 2016 +0200 @@ -1823,7 +1823,7 @@ in.equals("org/netbeans/html/boot/spi/Fn") )) { mcn = "java_lang_Class"; - } else if (in.startsWith("net/java/html/lib/") && in.endsWith("/Exports")) { + } else if (DirectlLibraries.isScriptLibrary(in) && in.endsWith("/Exports")) { append(mi[1]); append('('); mcn = null; @@ -2394,6 +2394,13 @@ private void generateInstanceOf(int indx, final StackMapper smapper) throws IOException { String type = jc.getClassName(indx); + if (DirectlLibraries.isScriptLibrary(type)) { + emit(smapper, this, + "var @2 = @1 !== null && @1 !== undefined", + smapper.popA(), smapper.pushI(), + mangleClassName(type)); + return; + } if (!type.startsWith("[")) { emit(smapper, this, "var @2 = @1 != null && @1['$instOf_@3'] ? 1 : 0;", @@ -2424,6 +2431,12 @@ private void generateCheckcast(int indx, final StackMapper smapper) throws IOException { String type = jc.getClassName(indx); + if (DirectlLibraries.isScriptLibrary(type)) { + emitNoFlush(smapper, + "", + smapper.getT(0, VarType.REFERENCE, false), mangleClassName(type), type.replace('/', '.')); + return; + } if (!type.startsWith("[")) { emitNoFlush(smapper, "if (@1 !== null && !@1['$instOf_@2']) vm.java_lang_Class(false).castEx(@1, '@3');",