# HG changeset patch # User Jaroslav Tulach # Date 1411712891 -7200 # Node ID e74a1895f07993dd3b990117e7d19d1727379e6f # Parent 2e69145b9feb3b35b8656548babba36567e05451 Using function callback so we can assign the vm attribute in a non-string way and obfuscation applies to it. diff -r 2e69145b9feb -r e74a1895f079 rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Thu Sep 25 23:48:41 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Fri Sep 26 08:28:11 2014 +0200 @@ -731,15 +731,15 @@ append( "\n}, function(exports) {\n" + " var vm = {};\n"); - append(" function link(n) {\n" + append(" function link(n, assign) {\n" + " return function() {\n" + " var cls = n['replace__Ljava_lang_String_2CC']" + "('/', '_').toString();\n" + " var dot = n['replace__Ljava_lang_String_2CC']" + "('/', '.').toString();\n" + " exports.loadClass(dot);\n" - + " vm[cls] = exports[cls];\n" - + " return vm[cls](arguments);\n" + + " assign(exports[cls]);\n" + + " return exports[cls](arguments);\n" + " };\n" + " };\n" ); @@ -753,11 +753,11 @@ @Override protected String generateClass(String className) throws IOException { if (isExternalClass(className)) { - append("\n").append(assignClass( - className.replace('/', '_'))) + final String cls = className.replace('/', '_'); + append("\n").append(assignClass(cls)) .append("link('") .append(className) - .append("');"); + .append("', function(f) { ").append(assignClass(cls)).append(" f; });"); return null; } @@ -782,7 +782,8 @@ out.append("\nvm.").append(cls).append(" = function() {"); out.append("\n var instance = arguments.length == 0 || arguments[0] === true;"); out.append("\n delete vm.").append(cls).append(";"); - out.append("\n return link('").append(n).append("')(instance);"); + out.append("\n return link('").append(n).append("', function(f) { vm."); + out.append(cls).append(" = f;})(instance);"); out.append("\n}"); } }