Merge "Support --pg-conf in Disassemble for class-file input"
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 24b2cc9..0ba40b3 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.2.19-dev";
+ public static final String LABEL = "1.2.20-dev";
private Version() {
}
diff --git a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
index 6599591..90b863c 100644
--- a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
+++ b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
@@ -77,7 +77,11 @@
for (int i = 0; i < flags.size(); i++) {
String flag = flags.get(i);
- if (flag.startsWith("--positions")) {
+ if (flag.startsWith("--positions=")) {
+ String positionsValue = flag.substring("--positions=".length());
+ if (positionsValue.startsWith("throwing") || positionsValue.startsWith("important")) {
+ noLocals = true;
+ }
continue;
}
if (flag.startsWith("--num-threads=")) {
diff --git a/src/main/java/com/android/tools/r8/graph/DexCallSite.java b/src/main/java/com/android/tools/r8/graph/DexCallSite.java
index e690317..11bca5a 100644
--- a/src/main/java/com/android/tools/r8/graph/DexCallSite.java
+++ b/src/main/java/com/android/tools/r8/graph/DexCallSite.java
@@ -118,10 +118,14 @@
public void collectIndexedItems(IndexedItemCollection indexedItems,
DexMethod method, int instructionOffset) {
assert method != null;
+ // Since collectIndexedItems() is called in transactions that may be rolled back, we may end up
+ // setting this.method and this.instructionOffset more than once. If we do set them more than
+ // once, then we must have the same values for method and instructionOffset every time.
+ assert this.method == null || this.method == method;
+ assert this.instructionOffset == 0 || this.instructionOffset == instructionOffset;
+ this.method = method;
+ this.instructionOffset = instructionOffset;
if (indexedItems.addCallSite(this)) {
- assert this.method == null;
- this.method = method;
- this.instructionOffset = instructionOffset;
methodName.collectIndexedItems(indexedItems, method, instructionOffset);
methodProto.collectIndexedItems(indexedItems, method, instructionOffset);
bootstrapMethod.collectIndexedItems(indexedItems, method, instructionOffset);
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 92c68aa..68796ac 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -10,6 +10,7 @@
import com.android.tools.r8.DexIndexedConsumer;
import com.android.tools.r8.ProgramConsumer;
import com.android.tools.r8.StringConsumer;
+import com.android.tools.r8.Version;
import com.android.tools.r8.dex.Marker;
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.errors.InvalidDebugInfoException;
@@ -97,7 +98,8 @@
public boolean enableClassMerging = false;
public boolean enableDevirtualization = true;
public boolean enableNonNullTracking = true;
- public boolean enableInlining = true;
+ public boolean enableInlining =
+ !Version.isDev() || System.getProperty("com.android.tools.r8.disableinlining") == null;
public boolean enableClassInlining = true;
public int inliningInstructionLimit = 5;
public boolean enableSwitchMapRemoval = true;
diff --git a/third_party/gmscore/gmscore_v10.tar.gz.sha1 b/third_party/gmscore/gmscore_v10.tar.gz.sha1
index 15cab81..535f285 100644
--- a/third_party/gmscore/gmscore_v10.tar.gz.sha1
+++ b/third_party/gmscore/gmscore_v10.tar.gz.sha1
@@ -1 +1 @@
-43838ee1687ff48e866396dfd4b99415662fbea6
\ No newline at end of file
+fd2bc157ba2d61a19804107df47e0f87926b210d
\ 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 5983b5b..0ff5779 100644
--- a/third_party/gmscore/gmscore_v9.tar.gz.sha1
+++ b/third_party/gmscore/gmscore_v9.tar.gz.sha1
@@ -1 +1 @@
-0066065faeb293c5a850d3319f2cb8a48d1e760d
\ No newline at end of file
+4bfdee0d2287b061164f984dfa4ad6ec8617effa
\ No newline at end of file
diff --git a/tools/upload_to_x20.py b/tools/upload_to_x20.py
index 08e48d9..1efacf5 100755
--- a/tools/upload_to_x20.py
+++ b/tools/upload_to_x20.py
@@ -39,7 +39,7 @@
dest = os.path.join(GMSCORE_DEPS, sha1)
print 'Uploading to %s' % dest
shutil.copyfile(filename, dest)
- os.chmod(dest, stat.S_IRWXU | stat.S_IROTH | stat.S_IXOTH | stat.S_IRWXG)
+ subprocess.check_call(['chmod', '664', dest])
sha1_file = '%s.sha1' % filename
with open(sha1_file, 'w') as output:
output.write(sha1)