Refactor code rewriting and remove desugar event consumer stub.
Bug: 199134556
Change-Id: I9cffd19a1732de989a24b51e5af3e4a602adbff6
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/D8MethodProcessor.java b/src/main/java/com/android/tools/r8/ir/conversion/D8MethodProcessor.java
index 9bcee66..22b279b 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/D8MethodProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/D8MethodProcessor.java
@@ -83,7 +83,7 @@
nonTerminalFutures.add(
ThreadUtils.processAsynchronously(
() ->
- converter.rewriteCode(
+ converter.rewriteNonDesugaredCode(
method,
eventConsumer,
OptimizationFeedbackIgnore.getInstance(),
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index ee74491..4f92d5b 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -547,7 +547,7 @@
if (options.isGeneratingClassFiles()
|| !(options.passthroughDexCode && definition.getCode().isDexCode())) {
// We do not process in call graph order, so anything could be a leaf.
- rewriteCode(
+ rewriteNonDesugaredCode(
method,
desugaringEventConsumer,
simpleOptimizationFeedback,
@@ -1033,7 +1033,7 @@
}
}
- Timing rewriteCode(
+ Timing rewriteNonDesugaredCode(
ProgramMethod method,
CfInstructionDesugaringEventConsumer desugaringEventConsumer,
OptimizationFeedback feedback,
@@ -1043,7 +1043,7 @@
method.getOrigin(),
new MethodPosition(method.getReference().asMethodReference()),
() ->
- rewriteCodeInternal(
+ rewriteNonDesugaredCodeInternal(
method,
desugaringEventConsumer,
feedback,
@@ -1056,20 +1056,36 @@
OptimizationFeedback feedback,
MethodProcessor methodProcessor,
MethodProcessingContext methodProcessingContext) {
- return rewriteCode(
- method,
- CfInstructionDesugaringEventConsumer.createForDesugaredCode(),
- feedback,
- methodProcessor,
- methodProcessingContext);
+ return ExceptionUtils.withOriginAndPositionAttachmentHandler(
+ method.getOrigin(),
+ new MethodPosition(method.getReference().asMethodReference()),
+ () ->
+ rewriteDesugaredCodeInternal(
+ method, feedback, methodProcessor, methodProcessingContext));
}
- private Timing rewriteCodeInternal(
+ private Timing rewriteNonDesugaredCodeInternal(
ProgramMethod method,
CfInstructionDesugaringEventConsumer desugaringEventConsumer,
OptimizationFeedback feedback,
MethodProcessor methodProcessor,
MethodProcessingContext methodProcessingContext) {
+ boolean didDesugar = desugar(method, desugaringEventConsumer, methodProcessingContext);
+ if (Log.ENABLED && didDesugar) {
+ Log.debug(
+ getClass(),
+ "Desugared code for %s:\n%s",
+ method.toSourceString(),
+ logCode(options, method.getDefinition()));
+ }
+ return rewriteDesugaredCodeInternal(method, feedback, methodProcessor, methodProcessingContext);
+ }
+
+ private Timing rewriteDesugaredCodeInternal(
+ ProgramMethod method,
+ OptimizationFeedback feedback,
+ MethodProcessor methodProcessor,
+ MethodProcessingContext methodProcessingContext) {
if (options.verbose) {
options.reporter.info(
new StringDiagnostic("Processing: " + method.toSourceString()));
@@ -1081,14 +1097,6 @@
method.toSourceString(),
logCode(options, method.getDefinition()));
}
- boolean didDesugar = desugar(method, desugaringEventConsumer, methodProcessingContext);
- if (Log.ENABLED && didDesugar) {
- Log.debug(
- getClass(),
- "Desugared code for %s:\n%s",
- method.toSourceString(),
- logCode(options, method.getDefinition()));
- }
if (options.testing.hookInIrConversion != null) {
options.testing.hookInIrConversion.run();
}
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/CfInstructionDesugaringEventConsumer.java b/src/main/java/com/android/tools/r8/ir/desugar/CfInstructionDesugaringEventConsumer.java
index 929b5a8..28334b1 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/CfInstructionDesugaringEventConsumer.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/CfInstructionDesugaringEventConsumer.java
@@ -77,107 +77,6 @@
companionMethodConsumer);
}
- // TODO(b/183998768): Remove this event consumer. It should be unneeded for R8 and for D8 the
- // desugaring of interface methods should be able to happen up front too avoiding the companion
- // callback on nest accessors.
- public static CfInstructionDesugaringEventConsumer createForDesugaredCode() {
- return new CfInstructionDesugaringEventConsumer() {
-
- @Override
- public void acceptCompanionMethod(ProgramMethod method, ProgramMethod companionMethod) {
- // A synthesized nest based accessor may itself be defined on an interface, in which case
- // desugaring the accessor will result in a rewrite to the companion method.
- }
-
- @Override
- public void acceptClasspathEmulatedInterface(DexClasspathClass clazz) {
- assert false;
- }
-
- @Override
- public void acceptWrapperClasspathClass(DexClasspathClass clazz) {
- assert false;
- }
-
- @Override
- public void acceptAPIConversion(ProgramMethod method) {
- assert false;
- }
-
- @Override
- public void acceptDesugaredLibraryRetargeterDispatchClasspathClass(DexClasspathClass clazz) {
- assert false;
- }
-
- @Override
- public void acceptThrowMethod(ProgramMethod method, ProgramMethod context) {
- assert false;
- }
-
- @Override
- public void acceptInvokeStaticInterfaceOutliningMethod(
- ProgramMethod method, ProgramMethod context) {
- assert false;
- }
-
- @Override
- public void acceptRecordClass(DexProgramClass recordClass) {
- assert false;
- }
-
- @Override
- public void acceptRecordMethod(ProgramMethod method) {
- assert false;
- }
-
- @Override
- public void acceptBackportedMethod(ProgramMethod backportedMethod, ProgramMethod context) {
- assert false;
- }
-
- @Override
- public void acceptInvokeSpecialBridgeInfo(InvokeSpecialBridgeInfo info) {
- assert false;
- }
-
- @Override
- public void acceptLambdaClass(LambdaClass lambdaClass, ProgramMethod context) {
- assert false;
- }
-
- @Override
- public void acceptConstantDynamicClass(
- ConstantDynamicClass constantDynamicClass, ProgramMethod context) {
- assert false;
- }
-
- @Override
- public void acceptNestFieldGetBridge(ProgramField target, ProgramMethod bridge) {
- assert false;
- }
-
- @Override
- public void acceptNestFieldPutBridge(ProgramField target, ProgramMethod bridge) {
- assert false;
- }
-
- @Override
- public void acceptNestMethodBridge(ProgramMethod target, ProgramMethod bridge) {
- assert false;
- }
-
- @Override
- public void acceptTwrCloseResourceMethod(ProgramMethod closeMethod, ProgramMethod context) {
- assert false;
- }
-
- @Override
- public void acceptCompanionClassClinit(ProgramMethod method) {
- assert false;
- }
- };
- }
-
public static class D8CfInstructionDesugaringEventConsumer
extends CfInstructionDesugaringEventConsumer {