Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/third_party/bazel/desugar/stateful-lambdas.patch
1695 views
1
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
2
index ff3e351996..f857e61d1e 100644
3
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
4
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaClassFixer.java
5
@@ -93,7 +93,7 @@ class LambdaClassFixer extends ClassVisitor {
6
checkArgument(BitFlags.noneSet(access, Opcodes.ACC_INTERFACE), "Not a class: %s", name);
7
checkState(this.originalInternalName == null, "not intended for reuse but reused for %s", name);
8
originalInternalName = name;
9
- hasState = false;
10
+ hasState = true;
11
hasFactory = false;
12
desc = null;
13
this.signature = null;
14
@@ -136,7 +136,7 @@ class LambdaClassFixer extends ClassVisitor {
15
} else if ("<init>".equals(name)) {
16
this.desc = desc;
17
this.signature = signature;
18
- if (!lambdaInfo.needFactory() && !desc.startsWith("()")) {
19
+ if (!lambdaInfo.needFactory()) {
20
access &= ~Opcodes.ACC_PRIVATE; // make constructor accessible if we'll call it directly
21
}
22
}
23
@@ -156,10 +156,6 @@ class LambdaClassFixer extends ClassVisitor {
24
25
@Override
26
public void visitEnd() {
27
- checkState(
28
- !hasState || hasFactory,
29
- "Expected factory method for capturing lambda %s",
30
- getInternalName());
31
if (!hasState) {
32
checkState(
33
signature == null,
34
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java
35
index 8f90d25ff5..f5ed6d524a 100644
36
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java
37
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/LambdaDesugaring.java
38
@@ -423,8 +423,7 @@ class LambdaDesugaring extends ClassVisitor {
39
String lambdaClassName = internalName + "$$Lambda$" + (lambdaCount++);
40
Type[] capturedTypes = Type.getArgumentTypes(desc);
41
boolean needFactory =
42
- capturedTypes.length != 0
43
- && !attemptAllocationBeforeArgumentLoads(lambdaClassName, capturedTypes);
44
+ !attemptAllocationBeforeArgumentLoads(lambdaClassName, capturedTypes);
45
lambdas.generateLambdaClass(
46
internalName,
47
LambdaInfo.create(
48
@@ -435,7 +434,7 @@ class LambdaDesugaring extends ClassVisitor {
49
bridgeInfo.bridgeMethod()),
50
bsmMethod,
51
args);
52
- if (desc.startsWith("()")) {
53
+ if (false) {
54
// For stateless lambda classes we'll generate a singleton instance that we can just load
55
checkState(capturedTypes.length == 0);
56
super.visitFieldInsn(
57
@@ -493,7 +492,6 @@ class LambdaDesugaring extends ClassVisitor {
58
* @return {@code true} if we were able to insert a new/dup, {@code false} otherwise
59
*/
60
private boolean attemptAllocationBeforeArgumentLoads(String internalName, Type[] paramTypes) {
61
- checkArgument(paramTypes.length > 0, "Expected at least one param for %s", internalName);
62
// Walk backwards past loads corresponding to constructor arguments to find the instruction
63
// after which we need to insert our NEW/DUP pair
64
AbstractInsnNode insn = instructions.getLast();
65
66