Status Update
Comments
sg...@google.com <sg...@google.com> #2
What has changed in javac is that for the methods on java.lang.Object
which are implicitly present on interfaces (interfaces does not inherit from Object
, but the Object
methods can still be looked-up, see invokeinterface
on the interface instead of invokevirtual
on Object
. Before invokeinterface
was only generated if the interface declared the Object
method.
For this example:
interface I {
public String toString();
}
interface J extends I {}
interface K {}
class T {
void f(I i, J j, K k) {
i.toString();
j.toString();
k.toString();
}
}
With new javac the code in f
is:
0: aload_0
1: invokeinterface #7, 1 // InterfaceMethod jdk8272564/I.toString:()Ljava/lang/String;
6: pop
7: aload_1
8: invokeinterface #13, 1 // InterfaceMethod jdk8272564/J.toString:()Ljava/lang/String;
13: pop
14: aload_2
15: invokeinterface #16, 1 // InterfaceMethod jdk8272564/K.toString:()Ljava/lang/String;
20: pop
21: return
With existing javac the code in f
is
stack=1, locals=3, args_size=3
0: aload_0
1: invokeinterface #2, 1 // InterfaceMethod jdk8272564/I.toString:()Ljava/lang/String;
6: pop
7: aload_1
8: invokevirtual #3 // Method java/lang/Object.toString:()Ljava/lang/String;
11: pop
12: aload_2
13: invokevirtual #3 // Method java/lang/Object.toString:()Ljava/lang/String;
16: pop
17: return
ap...@google.com <ap...@google.com> #3
Branch: main
commit d1e0899241cf49c0599465e0aba562db6f31477d
Author: Søren Gjesse <sgjesse@google.com>
Date: Mon Feb 07 16:46:31 2022
Add reproduction of failures with javac code with fix for JDK-8272564
Bug: 217106437
Bug: 218298666
Change-Id: I73b427bbd15bf4503d68b633c9850af8dd07742a
A src/test/examplesJava18/jdk8272564/K.java
A src/test/java/com/android/tools/r8/examples/jdk18/jdk8272564/Jdk8272564.java
A src/test/examplesJava18/jdk8272564/B.java
A src/test/examplesJava18/jdk8272564/J.java
M build.gradle
A src/test/examplesJava18/jdk8272564/A.java
A src/test/examplesJava18/jdk8272564/I.java
A src/test/examplesJava18/jdk8272564/C.java
A src/test/examplesJava18/jdk8272564/Main.java
A src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564Test.java
ap...@google.com <ap...@google.com> #4
Branch: main
commit 1b28e47ade937098834321a8da253b2780c181e8
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue Feb 08 15:46:41 2022
Rewrite code from javac code with for JDK-8272564
Some Dalvik and Art MVs does not support interface invokes to Object
members not explicitly defined on the symbolic reference of the
interface invoke. In these cases rewrite to a virtual invoke with
the symbolic reference java.lang.Object.
Bug: 218298666
Change-Id: I38abdea8d9bbf4d004be1877373b58de161a55a7
M src/main/java/com/android/tools/r8/graph/DexItemFactory.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
M src/test/examplesJava18/jdk8272564/I.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
M src/test/examplesJava18/jdk8272564/Main.java
M src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564Test.java
ap...@google.com <ap...@google.com> #5
Branch: main
commit a890db9b9c670e63b4f41400985268ec830c96ee
Author: Søren Gjesse <sgjesse@google.com>
Date: Tue Feb 08 20:51:13 2022
Negate condition to correctly match name
Bug: 218298666
Change-Id: Id8bf2048af36c8c07ce07b5bfd35ed766f555a52
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
sg...@google.com <sg...@google.com>
ap...@google.com <ap...@google.com> #6
Branch: main
commit f657b216abf893ecf1908fc48f98a3409d1cc0c8
Author: Søren Gjesse <sgjesse@google.com>
Date: Thu Apr 28 17:29:20 2022
Strenghten the check for the Art JDK-8272564 workaround
Also add a test of invalid invokes not changing.
Bug:
Change-Id: I9ab27dad52a04808b54ddaa37eccf7c4aaa9deaa
A src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564InvalidCode.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
sg...@google.com <sg...@google.com> #7
Changing this to P1, as fixes for this should be merged to release channels so they are prepared for javac JDK-18 code. Even with -target 11
javac from JDK-18 will generate this code.
ap...@google.com <ap...@google.com> #8
Branch: 3.2
commit 21c0036aa502a840d0f91a6900c7a7ba029788f1
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri Apr 29 10:24:43 2022
Version 3.2.60
Bug:
Change-Id: I8850398fbea4a8047b2fd740cd59f54aabe0ace7
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #9
Branch: 3.2
commit 1100490d661d94cdd0d2a8c5ddc4eaf4f95f881e
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri Apr 29 10:00:06 2022
Add missing method
Strenghten the check for the Art JDK-8272564 workaround
Also add a test of invalid invokes not changing.
Merge issue:
Added new method from
Bug:
Change-Id: I9ab27dad52a04808b54ddaa37eccf7c4aaa9deaa
A src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564InvalidCode.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
ap...@google.com <ap...@google.com> #10
Branch: 3.2
commit 9b8e2ecb73d882af622f4ab214922579f2c14110
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri Apr 29 09:58:43 2022
Rewrite code from javac code with for JDK-8272564
Some Dalvik and Art MVs does not support interface invokes to Object
members not explicitly defined on the symbolic reference of the
interface invoke. In these cases rewrite to a virtual invoke with
the symbolic reference java.lang.Object.
Conflicts:
Removed tests during cherry-pick. They used JDK-18 which is not
in third_party on the 3.2 branch.
Bug: 218298666
Change-Id: I38abdea8d9bbf4d004be1877373b58de161a55a7
M src/main/java/com/android/tools/r8/graph/DexItemFactory.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
ap...@google.com <ap...@google.com> #11
Branch: 3.3
commit f807a15c6b3df1f3f7f7e728e3998b988060f2b1
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri Apr 29 11:07:47 2022
Version 3.3.35
Bug:
Change-Id: Idcfd34d11baa7318ed5bd44c9e7e6a0eb9197f07
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #12
Branch: 3.3
commit 4fbd93fbe54fd98cb36dd195e11c3a8343dc9d58
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri Apr 29 11:07:28 2022
Strenghten the check for the Art JDK-8272564 workaround
Also add a test of invalid invokes not changing.
Bug:
Change-Id: I9ab27dad52a04808b54ddaa37eccf7c4aaa9deaa
A src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564InvalidCode.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
ap...@google.com <ap...@google.com> #13
Branch: 3.1
commit fe489dbb2e2df8bb500745fdbbff1e1a3751064c
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri Apr 29 11:28:37 2022
Version 3.1.74
Bug:
Change-Id: I35911f7fd661385fc90d74adb449831eb104ce5d
M src/main/java/com/android/tools/r8/Version.java
ap...@google.com <ap...@google.com> #14
Branch: 3.1
commit 72532b2fe5a8623eaa016f9fb14522c3ad853b32
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri Apr 29 11:28:11 2022
Strenghten the check for the Art JDK-8272564 workaround
Also add a test of invalid invokes not changing.
Bug:
Change-Id: I9ab27dad52a04808b54ddaa37eccf7c4aaa9deaa
A src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564InvalidCode.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
ap...@google.com <ap...@google.com> #15
Branch: 3.1
commit b49442885c0b272ad1ccd2d821d4f7b781775489
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri Apr 29 11:21:35 2022
Rewrite code from javac code with for JDK-8272564
Some Dalvik and Art MVs does not support interface invokes to Object
members not explicitly defined on the symbolic reference of the
interface invoke. In these cases rewrite to a virtual invoke with
the symbolic reference java.lang.Object.
Conflicts:
Removed tests during cherry-pick. They used JDK-18 which is not
in third_party on the 3.1 branch.
Merge issue:
Added new method from
Added code from
Bug: 218298666
Change-Id: I38abdea8d9bbf4d004be1877373b58de161a55a7
M src/main/java/com/android/tools/r8/graph/DexItemFactory.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
M src/main/java/com/android/tools/r8/graph/DexDefinitionSupplier.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
ap...@google.com <ap...@google.com> #16
Branch: 3.3
commit 4fbd93fbe54fd98cb36dd195e11c3a8343dc9d58
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri Apr 29 11:07:28 2022
Strenghten the check for the Art JDK-8272564 workaround
Also add a test of invalid invokes not changing.
Bug:
Change-Id: I9ab27dad52a04808b54ddaa37eccf7c4aaa9deaa
A src/test/java/com/android/tools/r8/desugar/jdk8272564/Jdk8272564InvalidCode.java
M src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
ap...@google.com <ap...@google.com> #17
Branch: 3.2
commit 666fcef6b74bc1e527fa06a6c6903feff9eadc36
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri May 06 10:58:50 2022
Negate condition to correctly match name
Bug: 218298666
Change-Id: Id8bf2048af36c8c07ce07b5bfd35ed766f555a52
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
ap...@google.com <ap...@google.com> #18
Branch: 3.1
commit 3c7b6516575c3eb979ff640abcc60ea70f1fa8e2
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri May 06 11:03:26 2022
Negate condition to correctly match name
Bug: 218298666
Change-Id: Id8bf2048af36c8c07ce07b5bfd35ed766f555a52
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
ap...@google.com <ap...@google.com> #19
Branch: 3.2
commit 666fcef6b74bc1e527fa06a6c6903feff9eadc36
Author: Søren Gjesse <sgjesse@google.com>
Date: Fri May 06 10:58:50 2022
Negate condition to correctly match name
Bug: 218298666
Change-Id: Id8bf2048af36c8c07ce07b5bfd35ed766f555a52
M src/main/java/com/android/tools/r8/utils/InternalOptions.java
M src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
de...@google.com <de...@google.com> #20
Thank you for your patience while our engineering team worked to resolve this issue. A fix for this issue is now available in:
- Android Studio Dolphin Beta 1 (2021.3.1.10)
- Android Gradle Plugin 7.3.0-beta01
We encourage you to try the latest update.
If you notice further issues or have questions, please file a new bug report.
Thank you for taking the time to submit feedback — we really appreciate it!
jk...@gmail.com <jk...@gmail.com> #21
Good level it back
Description
D8 and R8 rewritings will be required to undo the fix for JDK-8272564.