Merge changes I9c604ef3,I44500c3c,I8b417554
* changes:
Apply package renamings to resource filenames
Move test classes for -adaptresourcefilenames to examples/
Support for -adaptresourcefilenames
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index ebde0b4..e7d1ebc 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
// This field is accessed from release scripts using simple pattern matching.
// Therefore, changing this field could break our release scripts.
- public static final String LABEL = "1.3.12-dev";
+ public static final String LABEL = "1.3.13-dev";
private Version() {
}
diff --git a/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java b/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java
index 519bd58..b151ef8 100644
--- a/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java
+++ b/src/main/java/com/android/tools/r8/dex/JumboStringRewriter.java
@@ -123,7 +123,7 @@
DexCode code = method.getCode().asDexCode();
// As we have rewritten the code, we now know that its highest string index that is not
// a jumbo-string is firstJumboString (actually the previous string, but we do not have that).
- method.setDexCode(new DexCode(
+ method.setCode(new DexCode(
code.registerSize,
code.incomingRegisterSize,
code.outgoingRegisterSize,
diff --git a/src/main/java/com/android/tools/r8/graph/CfCode.java b/src/main/java/com/android/tools/r8/graph/CfCode.java
index e41120d..d588ab5 100644
--- a/src/main/java/com/android/tools/r8/graph/CfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/CfCode.java
@@ -206,6 +206,7 @@
GraphLense graphLense,
InternalOptions options,
Origin origin) {
+ assert getOwner() == encodedMethod;
return internalBuild(encodedMethod, appInfo, graphLense, options, null, null, origin);
}
@@ -218,6 +219,7 @@
ValueNumberGenerator valueNumberGenerator,
Position callerPosition,
Origin origin) {
+ assert getOwner() == encodedMethod;
assert valueNumberGenerator != null;
assert callerPosition != null;
return internalBuild(
diff --git a/src/main/java/com/android/tools/r8/graph/Code.java b/src/main/java/com/android/tools/r8/graph/Code.java
index 0484a63..187756a 100644
--- a/src/main/java/com/android/tools/r8/graph/Code.java
+++ b/src/main/java/com/android/tools/r8/graph/Code.java
@@ -16,6 +16,18 @@
public abstract class Code extends CachedHashValueDexItem {
+ private DexEncodedMethod owner;
+
+ public void setOwner(DexEncodedMethod encodedMethod) {
+ // When this Code is un/linked to DexEncodedMethod, the ownership should be updated accordingly.
+ owner = encodedMethod;
+ }
+
+ public DexEncodedMethod getOwner() {
+ // build*IR() will check if the current Code belongs to the given DexEncodedMethod.
+ return owner;
+ }
+
public abstract IRCode buildIR(
DexEncodedMethod encodedMethod,
AppInfo appInfo,
diff --git a/src/main/java/com/android/tools/r8/graph/DexCode.java b/src/main/java/com/android/tools/r8/graph/DexCode.java
index d0c40e1..d5f8001 100644
--- a/src/main/java/com/android/tools/r8/graph/DexCode.java
+++ b/src/main/java/com/android/tools/r8/graph/DexCode.java
@@ -193,6 +193,7 @@
GraphLense graphLense,
InternalOptions options,
Origin origin) {
+ assert getOwner() == encodedMethod;
DexSourceCode source =
new DexSourceCode(
this,
@@ -213,6 +214,7 @@
ValueNumberGenerator valueNumberGenerator,
Position callerPosition,
Origin origin) {
+ assert getOwner() == encodedMethod;
DexSourceCode source =
new DexSourceCode(
this,
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index e90839c..c540d24 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -116,6 +116,7 @@
this.parameterAnnotationsList = parameterAnnotationsList;
this.code = code;
assert code == null || !accessFlags.isAbstract();
+ setCodeOwnership();
}
public DexEncodedMethod(
@@ -276,7 +277,9 @@
}
public void setCode(Code code) {
+ voidCodeOwnership();
this.code = code;
+ setCodeOwnership();
}
public void setCode(
@@ -284,7 +287,7 @@
RegisterAllocator registerAllocator,
InternalOptions options) {
final DexBuilder builder = new DexBuilder(ir, registerAllocator, options);
- code = builder.build(method.getArity());
+ setCode(builder.build(method.getArity()));
}
@Override
@@ -316,12 +319,21 @@
return code;
}
- public void setDexCode(DexCode code) {
- this.code = code;
+ public void removeCode() {
+ voidCodeOwnership();
+ code = null;
}
- public void removeCode() {
- code = null;
+ private void setCodeOwnership() {
+ if (code != null) {
+ code.setOwner(this);
+ }
+ }
+
+ private void voidCodeOwnership() {
+ if (code != null) {
+ code.setOwner(null);
+ }
}
public boolean hasDebugPositions() {
@@ -389,6 +401,7 @@
public DexEncodedMethod toAbstractMethod() {
accessFlags.setAbstract();
+ voidCodeOwnership();
this.code = null;
return this;
}
diff --git a/src/main/java/com/android/tools/r8/graph/JarCode.java b/src/main/java/com/android/tools/r8/graph/JarCode.java
index 28143ad..629017b 100644
--- a/src/main/java/com/android/tools/r8/graph/JarCode.java
+++ b/src/main/java/com/android/tools/r8/graph/JarCode.java
@@ -113,6 +113,7 @@
GraphLense graphLense,
InternalOptions options,
Origin origin) {
+ assert getOwner() == encodedMethod;
triggerDelayedParsingIfNeccessary();
return options.debug
? internalBuildWithLocals(encodedMethod, appInfo, graphLense, options, null, null)
@@ -128,6 +129,7 @@
ValueNumberGenerator generator,
Position callerPosition,
Origin origin) {
+ assert getOwner() == encodedMethod;
assert generator != null;
triggerDelayedParsingIfNeccessary();
return options.debug
diff --git a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
index b6eb879..f1c1700 100644
--- a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
@@ -146,6 +146,8 @@
assert this.context != null;
this.code = code;
this.context = null;
+ // Propagate the ownership of LazyCfCode to CfCode.
+ code.setOwner(this.getOwner());
}
@Override
@@ -180,6 +182,7 @@
GraphLense graphLense,
InternalOptions options,
Origin origin) {
+ assert getOwner() == encodedMethod;
return asCfCode().buildIR(encodedMethod, appInfo, graphLense, options, origin);
}
@@ -192,6 +195,7 @@
ValueNumberGenerator valueNumberGenerator,
Position callerPosition,
Origin origin) {
+ assert getOwner() == encodedMethod;
return asCfCode()
.buildInliningIR(
encodedMethod,
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
index 5f8fd6b..5397be4 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Outliner.java
@@ -1170,6 +1170,7 @@
GraphLense graphLense,
InternalOptions options,
Origin origin) {
+ assert getOwner() == encodedMethod;
OutlineSourceCode source = new OutlineSourceCode(outline);
return new IRBuilder(encodedMethod, appInfo, source, options).build();
}
diff --git a/src/main/java/com/android/tools/r8/ir/synthetic/SynthesizedCode.java b/src/main/java/com/android/tools/r8/ir/synthetic/SynthesizedCode.java
index aa6be96..df273a7 100644
--- a/src/main/java/com/android/tools/r8/ir/synthetic/SynthesizedCode.java
+++ b/src/main/java/com/android/tools/r8/ir/synthetic/SynthesizedCode.java
@@ -53,6 +53,7 @@
GraphLense graphLense,
InternalOptions options,
Origin origin) {
+ assert getOwner() == encodedMethod;
return new IRBuilder(encodedMethod, appInfo, sourceCodeProvider.get(), options).build();
}
@@ -65,6 +66,7 @@
ValueNumberGenerator valueNumberGenerator,
Position callerPosition,
Origin origin) {
+ assert getOwner() == encodedMethod;
IRBuilder builder =
new IRBuilder(
encodedMethod, appInfo, sourceCodeProvider.get(), options, valueNumberGenerator);
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 64387ce..27d3d3b 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -1827,7 +1827,9 @@
this.noSideEffects = previous.noSideEffects;
assert lense.assertNotModified(previous.assumedValues.keySet());
this.assumedValues = previous.assumedValues;
- assert lense.assertNotModified(previous.alwaysInline);
+ assert lense.assertNotModified(
+ previous.alwaysInline.stream().map(this::definitionFor).filter(Objects::nonNull)
+ .collect(Collectors.toList()));
this.alwaysInline = previous.alwaysInline;
this.forceInline = rewriteMethodsWithRenamedSignature(previous.forceInline, lense);
this.neverInline = rewriteMethodsWithRenamedSignature(previous.neverInline, lense);
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index a2dd383..8dec498 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -61,10 +61,12 @@
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.function.Predicate;
+import java.util.stream.Collectors;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.tree.MethodNode;
@@ -542,7 +544,13 @@
timing.begin("fixup");
GraphLense result = new TreeFixer().fixupTypeReferences(mergingGraphLense);
timing.end();
- assert result.assertNotModified(appInfo.alwaysInline);
+ assert result.assertNotModified(
+ appInfo
+ .alwaysInline
+ .stream()
+ .map(appInfo::definitionFor)
+ .filter(Objects::nonNull)
+ .collect(Collectors.toList()));
assert result.assertNotModified(appInfo.noSideEffects.keySet());
// TODO(christofferqa): Enable this assert.
// assert result.assertNotModified(appInfo.pinnedItems);
diff --git a/third_party/gmail/gmail_android_170604.16.tar.gz.sha1 b/third_party/gmail/gmail_android_170604.16.tar.gz.sha1
index 9d9985c..f57ba90 100644
--- a/third_party/gmail/gmail_android_170604.16.tar.gz.sha1
+++ b/third_party/gmail/gmail_android_170604.16.tar.gz.sha1
@@ -1 +1 @@
-a6d49ef4fb2094672a6f6be039c971727cc9fd34
\ No newline at end of file
+161c569821a5c9b4cb8e99de764f3449191af084
\ No newline at end of file
diff --git a/third_party/gmscore/gmscore_v10.tar.gz.sha1 b/third_party/gmscore/gmscore_v10.tar.gz.sha1
index 535f285..15cab81 100644
--- a/third_party/gmscore/gmscore_v10.tar.gz.sha1
+++ b/third_party/gmscore/gmscore_v10.tar.gz.sha1
@@ -1 +1 @@
-fd2bc157ba2d61a19804107df47e0f87926b210d
\ No newline at end of file
+43838ee1687ff48e866396dfd4b99415662fbea6
\ No newline at end of file
diff --git a/third_party/gmscore/gmscore_v9.tar.gz.sha1 b/third_party/gmscore/gmscore_v9.tar.gz.sha1
index 0ff5779..5983b5b 100644
--- a/third_party/gmscore/gmscore_v9.tar.gz.sha1
+++ b/third_party/gmscore/gmscore_v9.tar.gz.sha1
@@ -1 +1 @@
-4bfdee0d2287b061164f984dfa4ad6ec8617effa
\ No newline at end of file
+0066065faeb293c5a850d3319f2cb8a48d1e760d
\ No newline at end of file
diff --git a/third_party/youtube/youtube.android_12.22.tar.gz.sha1 b/third_party/youtube/youtube.android_12.22.tar.gz.sha1
index 056ff59..8f6813c 100644
--- a/third_party/youtube/youtube.android_12.22.tar.gz.sha1
+++ b/third_party/youtube/youtube.android_12.22.tar.gz.sha1
@@ -1 +1 @@
-57b5c53a80ba010d1faef7da1b643f8c72b3e4e8
\ No newline at end of file
+73c4880898d734064815d0426d8fe84ee6d075b4
\ No newline at end of file