Version 1.0.8.
Merge: Fix types when translating dup2_x2 from the jar frontend.
CL: https://r8-review.googlesource.com/15761
Merge: Add regression test for dup2_x2 bug.
CL: https://r8-review.googlesource.com/15762
R=zerny@google.com
Change-Id: I49b8d7b2996819e7b89a92d5d621a567f812e19c
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 29fce2f..eba3f9e 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 = "v1.0.7";
+ public static final String LABEL = "v1.0.8";
private Version() {
}
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
index 117bc6f..69ecb83 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
@@ -2372,7 +2372,7 @@
builder.addMove(valueType(value1.type), stack0, stack2);
builder.addMove(valueType(value2.type), stack1, stack3);
builder.addMove(valueType(value3.type), stack2, stack4);
- builder.addMove(valueType(value3.type), stack3, stack5);
+ builder.addMove(valueType(value4.type), stack3, stack5);
builder.addMove(valueType(value1.type), stack4, stack0);
builder.addMove(valueType(value2.type), stack5, stack1);
}
diff --git a/src/test/java/com/android/tools/r8/jasmin/Regress72758525.java b/src/test/java/com/android/tools/r8/jasmin/Regress72758525.java
new file mode 100644
index 0000000..97331c8
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/jasmin/Regress72758525.java
@@ -0,0 +1,61 @@
+// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.jasmin;
+
+import com.android.tools.r8.jasmin.JasminBuilder.ClassFileVersion;
+import org.junit.Test;
+
+public class Regress72758525 extends JasminTestBase {
+
+ private JasminBuilder buildClass() {
+ JasminBuilder builder = new JasminBuilder(ClassFileVersion.JDK_1_4);
+ JasminBuilder.ClassBuilder clazz = builder.addClass("Test");
+
+ clazz.addDefaultConstructor();
+
+ clazz.addMainMethod(
+ ".limit stack 25",
+ ".limit locals 1",
+ "aload 0",
+ "dup",
+ "lconst_0",
+ "dconst_1",
+ "fconst_0",
+ "lconst_1",
+ "iconst_5",
+ "fconst_1",
+ "dconst_1",
+ "new Test",
+ "dup",
+ "invokespecial Test/<init>()V",
+ "lconst_0",
+ "new java/lang/Object",
+ "dup",
+ "invokespecial java/lang/Object/<init>()V",
+ "iconst_m1",
+ "dup2",
+ "dup2_x2",
+ "L0:",
+ "ineg",
+ "new java/lang/Object",
+ "dup",
+ "invokespecial java/lang/Object/<init>()V",
+ "dup2_x2",
+ "pop2",
+ "pop",
+ "aload 0",
+ "ifnull L0",
+ "i2f",
+ "invokestatic java/lang/Float/isNaN(F)Z",
+ "return");
+ return builder;
+ }
+
+ @Test
+ public void test() throws Exception {
+ JasminBuilder builder = buildClass();
+ runOnArtD8(builder, "Test");
+ }
+}