1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Apr 15 12:29:45 2015 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed Sep 02 23:20:01 2015 +0200
1.3 @@ -21,6 +21,15 @@
1.4 import java.io.InputStream;
1.5 import org.apidesign.bck2brwsr.core.JavaScriptBody;
1.6 import static org.apidesign.vm4brwsr.ByteCodeParser.*;
1.7 +import org.apidesign.vm4brwsr.ByteCodeParser.AnnotationParser;
1.8 +import org.apidesign.vm4brwsr.ByteCodeParser.BootMethodData;
1.9 +import org.apidesign.vm4brwsr.ByteCodeParser.CPX2;
1.10 +import org.apidesign.vm4brwsr.ByteCodeParser.ClassData;
1.11 +import org.apidesign.vm4brwsr.ByteCodeParser.FieldData;
1.12 +import org.apidesign.vm4brwsr.ByteCodeParser.MethodData;
1.13 +import org.apidesign.vm4brwsr.ByteCodeParser.StackMapIterator;
1.14 +import org.apidesign.vm4brwsr.ByteCodeParser.TrapData;
1.15 +import org.apidesign.vm4brwsr.ByteCodeParser.TrapDataIterator;
1.16
1.17 /** Translator of the code inside class files to JavaScript.
1.18 *
1.19 @@ -87,7 +96,7 @@
1.20 }
1.21
1.22 final String accessClassFalse(String classOperation) {
1.23 - if (jc.getClassName().replace('/', '_').equals(classOperation)) {
1.24 + if (mangleClassName(jc.getClassName()).equals(classOperation)) {
1.25 return "c";
1.26 }
1.27 classRefs.addIfMissing(classOperation);
1.28 @@ -294,7 +303,7 @@
1.29 }
1.30 }
1.31 for (String superInterface : jc.getSuperInterfaces()) {
1.32 - String intrfc = superInterface.replace('/', '_');
1.33 + String intrfc = mangleClassName(superInterface);
1.34 append("\n vm.").append(intrfc).append("(false)['fillInstOf'](x);");
1.35 requireReference(superInterface);
1.36 }
1.37 @@ -1843,7 +1852,7 @@
1.38 }
1.39 if (d.charAt(0) == 'L') {
1.40 assert d.charAt(d.length() - 1) == ';';
1.41 - out.append(d.replace('/', '_').substring(0, d.length() - 1));
1.42 + out.append(mangleClassName(d).substring(0, d.length() - 1));
1.43 } else {
1.44 out.append(d);
1.45 }
1.46 @@ -1977,7 +1986,7 @@
1.47
1.48 int paramBeg = body.indexOf('(', sigEnd + 1);
1.49
1.50 - sb.append("vm.").append(pkgName.replace('/', '_')).append("_$JsCallbacks$(false)._VM().");
1.51 + sb.append("vm.").append(mangleClassName(pkgName)).append("_$JsCallbacks$(false)._VM().");
1.52 sb.append(mangleJsCallbacks(fqn, method, params, false));
1.53 sb.append("(").append(refId);
1.54 if (body.charAt(paramBeg + 1) != ')') {
1.55 @@ -2014,7 +2023,7 @@
1.56
1.57 int paramBeg = body.indexOf('(', sigEnd + 1);
1.58
1.59 - sb.append("vm.").append(pkgName.replace('/', '_')).append("_$JsCallbacks$(false)._VM().");
1.60 + sb.append("vm.").append(mangleClassName(pkgName)).append("_$JsCallbacks$(false)._VM().");
1.61 sb.append(mangleJsCallbacks(fqn, method, params, true));
1.62 sb.append("(");
1.63 pos = paramBeg + 1;
1.64 @@ -2258,7 +2267,7 @@
1.65 final String classInternalName = jc.getClassName(e.catch_cpx);
1.66 addReference(classInternalName);
1.67 append("e = vm.java_lang_Class(false).bck2BrwsrThrwrbl(e);");
1.68 - append("if (e['$instOf_" + classInternalName.replace('/', '_') + "']) {");
1.69 + append("if (e['$instOf_" + mangleClassName(classInternalName) + "']) {");
1.70 append("var stA0 = e;");
1.71 goTo(this, current, e.handler_pc, topMostLabel);
1.72 append("}\n");
1.73 @@ -2406,7 +2415,7 @@
1.74 emit(smapper, this,
1.75 "var @2 = @1 != null && @1['$instOf_@3'] ? 1 : 0;",
1.76 smapper.popA(), smapper.pushI(),
1.77 - type.replace('/', '_'));
1.78 + mangleClassName(type));
1.79 } else {
1.80 int cnt = 0;
1.81 while (type.charAt(cnt) == '[') {
1.82 @@ -2435,7 +2444,7 @@
1.83 if (!type.startsWith("[")) {
1.84 emitNoFlush(smapper,
1.85 "if (@1 !== null && !@1['$instOf_@2']) vm.java_lang_Class(false).castEx();",
1.86 - smapper.getT(0, VarType.REFERENCE, false), type.replace('/', '_'));
1.87 + smapper.getT(0, VarType.REFERENCE, false), mangleClassName(type));
1.88 } else {
1.89 int cnt = 0;
1.90 while (type.charAt(cnt) == '[') {