Allow invalid CF accessflags for chanu app dump
Bug: 172535996
Change-Id: I4c7993c8d3e04cb3f339ea4286f605d7c54dd575
diff --git a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
index 455f03a..97ef2dc 100644
--- a/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/jar/CfApplicationWriter.java
@@ -183,7 +183,10 @@
clazz.accessFlags.setSuper();
}
}
- int access = clazz.accessFlags.getAsCfAccessFlags();
+ int access =
+ options.testing.allowInvalidCfAccessFlags
+ ? clazz.accessFlags.materialize()
+ : clazz.accessFlags.getAsCfAccessFlags();
if (clazz.isDeprecated()) {
access = AsmUtils.withDeprecated(access);
}
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 69b964d..520f04a 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -1346,6 +1346,8 @@
public boolean forceIRForCfToCfDesugar =
System.getProperty("com.android.tools.r8.forceIRForCfToCfDesugar") != null;
public boolean disableMappingToOriginalProgramVerification = false;
+ public boolean allowInvalidCfAccessFlags =
+ System.getProperty("com.android.tools.r8.allowInvalidCfAccessFlags") != null;
// Flag to allow processing of resources in D8. A data resource consumer still needs to be
// specified.
diff --git a/tools/compiledump.py b/tools/compiledump.py
index 797019b..4c57722 100755
--- a/tools/compiledump.py
+++ b/tools/compiledump.py
@@ -272,6 +272,8 @@
cmd.append('-ea')
if args.printtimes:
cmd.append('-Dcom.android.tools.r8.printtimes=1')
+ if hasattr(args, 'properties'):
+ cmd.extend(args.properties);
cmd.extend(['-cp', '%s:%s' % (wrapper_dir, jar)])
if compiler == 'd8':
cmd.append('com.android.tools.r8.D8')
diff --git a/tools/run_on_app_dump.py b/tools/run_on_app_dump.py
index 93123e0..23e5aef 100755
--- a/tools/run_on_app_dump.py
+++ b/tools/run_on_app_dump.py
@@ -47,6 +47,7 @@
'revision': None,
'folder': None,
'skip_recompilation': False,
+ 'compiler_properties': [],
}
# This below does not work in python3
defaults.update(fields.items())
@@ -111,8 +112,9 @@
'url': 'https://github.com/mkj-gram/chanu.git',
'revision': '6e53458f167b6d78398da60c20fd0da01a232617',
'folder': 'chanu',
- # TODO(b/172535996): Fix recompilation
- 'skip_recompilation': True
+ # The app depends on a class file that has access flags interface but
+ # not abstract
+ 'compiler_properties': ['-Dcom.android.tools.r8.allowInvalidCfAccessFlags=true']
}),
# TODO(b/172539375): Monkey runner fails on recompilation.
App({
@@ -543,6 +545,7 @@
'program_jar': prev_recomp_jar,
'nolib': not is_minified_r8(shrinker),
'config_file_consumer': remove_print_lines,
+ 'properties': app.compiler_properties,
})
app_jar = os.path.join(