Merge "Update Art 5.1.1 stack guard patch"
diff --git a/src/main/java/com/android/tools/r8/dex/FileWriter.java b/src/main/java/com/android/tools/r8/dex/FileWriter.java
index 8afbc8b..f24f4de 100644
--- a/src/main/java/com/android/tools/r8/dex/FileWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/FileWriter.java
@@ -671,14 +671,17 @@
private void writeMethodHandle(DexMethodHandle methodHandle) {
checkThatInvokeCustomIsAllowed();
- MethodHandleType methodHandleDexType = methodHandle.type;
- switch (methodHandleDexType) {
+ MethodHandleType methodHandleDexType;
+ switch (methodHandle.type) {
case INVOKE_CONSTRUCTOR:
throw new CompilationError("Constructor method handle type is not yet supported.");
case INVOKE_INTERFACE:
case INVOKE_SUPER:
methodHandleDexType = MethodHandleType.INVOKE_INSTANCE;
break;
+ default:
+ methodHandleDexType = methodHandle.type;
+ break;
}
assert dest.isAligned(4);
dest.putShort(methodHandleDexType.getValue());
diff --git a/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java b/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
index 8f8444c..8a001ae 100644
--- a/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
+++ b/src/main/java/com/android/tools/r8/ir/code/ArithmeticBinop.java
@@ -5,6 +5,7 @@
package com.android.tools.r8.ir.code;
import com.android.tools.r8.code.Instruction;
+import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.ir.conversion.DexBuilder;
public abstract class ArithmeticBinop extends Binop {
@@ -108,6 +109,8 @@
case LONG:
instruction = CreateLong2Addr(dest, right);
break;
+ default:
+ throw new Unreachable("Unexpected numeric type " + type.name());
}
} else if (!rightValue().needsRegister()) {
assert !isSub(); // Constants in instructions for sub must be handled in subclass Sub.
@@ -134,6 +137,8 @@
case LONG:
instruction = CreateLong(dest, left, right);
break;
+ default:
+ throw new Unreachable("Unexpected numeric type " + type.name());
}
}
builder.add(this, instruction);
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/LambdaMainMethodSourceCode.java b/src/main/java/com/android/tools/r8/ir/desugar/LambdaMainMethodSourceCode.java
index 5eb4c30..2355e5e 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/LambdaMainMethodSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/LambdaMainMethodSourceCode.java
@@ -406,6 +406,9 @@
add(builder -> builder.addConversion(to, type, result, register));
return result;
}
+ default:
+ // exception is thrown below
+ break;
}
}
diff --git a/tools/test.py b/tools/test.py
index e3fbd9b..53a7b1e 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -69,21 +69,7 @@
url = 'http://storage.googleapis.com/%s/%s/index.html' % (BUCKET, u_dir)
print 'Test results available at: %s' % url
-def run_bot_debugging():
- subprocess.check_call(['gsutil.py', 'cp', 'gs://r8-test-results/hello.dex', '/tmp/hello.dex'])
- subprocess.check_call(['bash', 'tools/linux/art/bin/art', '-cp', '/tmp/hello.dex', 'hello.Hello'])
- subprocess.check_call(['cat', '/proc/meminfo'])
- subprocess.check_call(['ps', 'aux'])
- print 'ulimit -s'
- subprocess.check_call('ulimit -s', shell=True)
-
def Main():
- user = os.environ.get('USER', 'foobar')
- bot_name = os.environ.get('BUILDBOT_BUILDERNAME')
- if user == 'chrome-bot' and (bot_name == 'linux-jctf' or bot_name == 'd8-linux-jctf'):
- print 'Running temporarily disabled for %s' % user
- run_bot_debugging()
- return 0
(options, args) = ParseOptions()
gradle_args = ['cleanTest', 'test']
if len(args) > 1: