rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java
branchclosure
changeset 1514 d2401e2648af
parent 1513 ba912ef24b27
child 1519 4d3780a69843
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Wed Apr 30 15:04:10 2014 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Wed Apr 30 15:57:56 2014 +0200
     1.3 @@ -486,6 +486,10 @@
     1.4                    "  return vm;\n"
     1.5                  + "  };\n"
     1.6                  + "  var extensions = [];\n"
     1.7 +                + "  function mangleClass(name) {\n"
     1.8 +                + "    return name.replace__Ljava_lang_String_2Ljava_lang_CharSequence_2Ljava_lang_CharSequence_2(\n"
     1.9 +                + "      '_', '_1').replace__Ljava_lang_String_2CC('.','_');\n"
    1.10 +                + "  };\n"
    1.11                  + "  global.bck2brwsr = function() {\n"
    1.12                  + "    var args = Array.prototype.slice.apply(arguments);\n"
    1.13                  + "    var resources = {};\n"
    1.14 @@ -509,7 +513,7 @@
    1.15                  + "    var loader = {};\n"
    1.16                  + "    loader.vm = vm;\n"
    1.17                  + "    loader.loadClass = function(name) {\n"
    1.18 -                + "      var attr = name.replace__Ljava_lang_String_2CC('.','_');\n"
    1.19 +                + "      var attr = mangleClass(name);\n"
    1.20                  + "      var fn = vm[attr];\n"
    1.21                  + "      if (fn) return fn(false);\n"
    1.22                  + "      try {\n"
    1.23 @@ -530,6 +534,12 @@
    1.24                  + "      throw 'Cannot initialize the bck2brwsr VM twice!';\n"
    1.25                  + "    }\n"
    1.26                  + "    vm.loadClass = loader.loadClass;\n"
    1.27 +                + "    vm._reload = function(name, byteCode) {;\n"
    1.28 +                + "      var attr = mangleClass(name);\n"
    1.29 +                + "      delete vm[attr];\n"
    1.30 +                + "      return vm.org_apidesign_vm4brwsr_VMLazy(false).\n"
    1.31 +                + "        reload__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2_3B(loader, name, args, byteCode);\n"
    1.32 +                + "    };\n"
    1.33                  + "    vm.loadBytes = function(name, skip) {\n"
    1.34                  + "      if (resources[name]) return resources[name][0];\n"
    1.35                  + "      return vm.org_apidesign_vm4brwsr_VMLazy(false).\n"