1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Fri May 24 16:45:32 2013 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Sat Apr 26 19:13:56 2014 +0200
1.3 @@ -433,14 +433,24 @@
1.4 + " for (var i = 0; i < extensions.length; ++i) {\n"
1.5 + " extensions[i](vm);\n"
1.6 + " }\n"
1.7 + + " var knownExtensions = extensions.length;\n"
1.8 + " var loader = {};\n"
1.9 + " loader.vm = vm;\n"
1.10 + " loader.loadClass = function(name) {\n"
1.11 + " var attr = name.replace__Ljava_lang_String_2CC('.','_');\n"
1.12 + " var fn = vm[attr];\n"
1.13 + " if (fn) return fn(false);\n"
1.14 - + " return vm.org_apidesign_vm4brwsr_VMLazy(false).\n"
1.15 - + " load__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2(loader, name, args);\n"
1.16 + + " try {\n"
1.17 + + " return vm.org_apidesign_vm4brwsr_VMLazy(false).\n"
1.18 + + " load__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2(loader, name, args);\n"
1.19 + + " } catch (err) {\n"
1.20 + + " while (knownExtensions < extensions.length) {\n"
1.21 + + " extensions[knownExtensions++](vm);\n"
1.22 + + " }\n"
1.23 + + " fn = vm[attr];\n"
1.24 + + " if (fn) return fn(false);\n"
1.25 + + " throw err;\n"
1.26 + + " }\n"
1.27 + " }\n"
1.28 + " if (vm.loadClass) {\n"
1.29 + " throw 'Cannot initialize the bck2brwsr VM twice!';\n"
1.30 @@ -456,9 +466,9 @@
1.31 + " return loader;\n"
1.32 + " };\n");
1.33 out.append(
1.34 - " global.bck2brwsr.registerExtension"
1.35 - + " = function(extension) {\n"
1.36 + " global.bck2brwsr.registerExtension = function(extension) {\n"
1.37 + " extensions.push(extension);\n"
1.38 + + " return null;\n"
1.39 + " };\n");
1.40 out.append("}(this));");
1.41 }