# HG changeset patch # User Jaroslav Tulach # Date 1411721094 -7200 # Node ID ce898bccdbc8abae36eeb3f33f779c04d6d9e165 # Parent 8e627eb9edf128361c14132a897daa959713e4e5 Can call methods of Object in obfuscation mode diff -r 8e627eb9edf1 -r ce898bccdbc8 rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Fri Sep 26 10:22:23 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Fri Sep 26 10:44:54 2014 +0200 @@ -421,10 +421,18 @@ private String accessNonVirtualMember(String object, String mangledName, ClassData declaringClass) { - return ((declaringClass != null) - && !isExternalClass(declaringClass.getClassName())) - ? object + "." + mangledName - : object + "['" + mangledName + "']"; + if (declaringClass == null) { + return object + "['" + mangledName + "']"; + } + final String className = declaringClass.getClassName(); + if ( + "java/lang/Object".equals(className) || + "java/lang/reflect/Array".equals(className) || + isExternalClass(className) + ) { + return object + "['" + mangledName + "']"; + } + return object + "." + mangledName; } private final class ExportedMethodFinder diff -r 8e627eb9edf1 -r ce898bccdbc8 rt/vm/src/test/java/org/apidesign/vm4brwsr/Resources.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/Resources.java Fri Sep 26 10:22:23 2014 +0200 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/Resources.java Fri Sep 26 10:44:54 2014 +0200 @@ -92,7 +92,9 @@ URL url = en.nextElement(); sb.append(readIS(url.openStream(), true)); } - return sb.toString().toString(); + String s = sb.toString(); + s = s + s.hashCode(); + return s.toString(); } public static String loadJustHello() throws IOException { URL url = Resources.class.getResource("/META-INF/ahoj"); diff -r 8e627eb9edf1 -r ce898bccdbc8 rt/vm/src/test/java/org/apidesign/vm4brwsr/ResourcesWithExtensionsTest.java --- a/rt/vm/src/test/java/org/apidesign/vm4brwsr/ResourcesWithExtensionsTest.java Fri Sep 26 10:22:23 2014 +0200 +++ b/rt/vm/src/test/java/org/apidesign/vm4brwsr/ResourcesWithExtensionsTest.java Fri Sep 26 10:44:54 2014 +0200 @@ -39,6 +39,7 @@ @Test public void checkHelloWorld() throws Exception { String exp = "Hello World!"; + exp = exp + exp.hashCode(); assertExec("Loading precompiled resources:", Resources.class, "loadHello__Ljava_lang_String_2",