Seek the class in VM as well as among exported symbols to allow calculator demo to start in full obfuscation mode closure
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Thu, 22 May 2014 12:19:52 +0200
branchclosure
changeset 158560dcb3d7a687
parent 1584 7b6295731c30
child 1586 d4ee65642d8d
Seek the class in VM as well as among exported symbols to allow calculator demo to start in full obfuscation mode
javaquery/demo-calculator/pom.xml
rt/emul/mini/src/main/java/java/lang/Class.java
     1.1 --- a/javaquery/demo-calculator/pom.xml	Thu May 22 10:48:09 2014 +0200
     1.2 +++ b/javaquery/demo-calculator/pom.xml	Thu May 22 12:19:52 2014 +0200
     1.3 @@ -12,7 +12,7 @@
     1.4  
     1.5    <properties>
     1.6      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     1.7 -    <bck2brwsr.obfuscationlevel>MINIMAL</bck2brwsr.obfuscationlevel>
     1.8 +    <bck2brwsr.obfuscationlevel>FULL</bck2brwsr.obfuscationlevel>
     1.9    </properties>
    1.10    <build>
    1.11        <plugins>
     2.1 --- a/rt/emul/mini/src/main/java/java/lang/Class.java	Thu May 22 10:48:09 2014 +0200
     2.2 +++ b/rt/emul/mini/src/main/java/java/lang/Class.java	Thu May 22 12:19:52 2014 +0200
     2.3 @@ -238,14 +238,18 @@
     2.4      }
     2.5      
     2.6      @JavaScriptBody(args = {"n", "c" }, body =
     2.7 -        "if (!vm[c]) {\n"
     2.8 -      + "  if (vm.loadClass) {\n"
     2.9 -      + "    vm.loadClass(n);\n"
    2.10 +        "var m = vm[c];\n"
    2.11 +      + "if (!m) {\n"
    2.12 +      + "  var l = vm.loadClass ? vm.loadClass : exports ? exports.loadClass : null;\n"
    2.13 +      + "  if (l) {\n"
    2.14 +      + "    l(n);\n"
    2.15        + "  }\n"
    2.16 -      + "  if (!vm[c]) return null;\n"
    2.17 +      + "  if (vm[c]) m = vm[c];\n"
    2.18 +      + "  else if (exports[c]) m = exports[c];\n"
    2.19        + "}\n"
    2.20 -      + "vm[c](false);"
    2.21 -      + "return vm[c].$class;"
    2.22 +      + "if (!m) return null;"
    2.23 +      + "m(false);"
    2.24 +      + "return m.$class;"
    2.25      )
    2.26      private static native Class<?> loadCls(String n, String c);
    2.27