Update external/r8 to 2bfb29a

Merge remote-tracking branch 'aosp/upstream-mirror' into merge-r8-2bfb29a

Test: m -j USE_D8=true USE_R8=true tests
Change-Id: I249f979f3e349859607d3d67930d01e7cb82b901
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..b14a1a0
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,36 @@
+java_binary_host {
+    name: "d8",
+    wrapper: "etc/d8",
+    manifest: "manifest_d8.txt",
+    static_libs: [ "r8-src" ],
+}
+
+java_binary_host {
+    name: "r8",
+    wrapper: "etc/r8",
+    manifest: "manifest_r8.txt",
+    static_libs: [ "r8-src" ],
+}
+
+java_library_host  {
+    name: "r8-src",
+    srcs: ["src/main/**/*.java"],
+    static_libs: [
+        "r8-support",
+    ],
+}
+
+java_import_host {
+    name: "r8-support",
+    jars: [
+        "deps/asm-6.0.jar",
+        "deps/asm-commons-6.0.jar",
+        "deps/asm-tree-6.0.jar",
+        "deps/asm-util-6.0.jar",
+        "deps/commons-compress-1.12.jar",
+        "deps/fastutil-7.2.0.jar",
+        "deps/jopt-simple-4.6.jar",
+        "deps/json-simple-1.1.1.jar",
+        "deps/guava-23.0.jar",
+    ],
+}
diff --git a/deps/asm-6.0.jar b/deps/asm-6.0.jar
new file mode 100644
index 0000000..cf2de27
--- /dev/null
+++ b/deps/asm-6.0.jar
Binary files differ
diff --git a/deps/asm-commons-6.0.jar b/deps/asm-commons-6.0.jar
new file mode 100644
index 0000000..33ba0c4
--- /dev/null
+++ b/deps/asm-commons-6.0.jar
Binary files differ
diff --git a/deps/asm-tree-6.0.jar b/deps/asm-tree-6.0.jar
new file mode 100644
index 0000000..2aa9815
--- /dev/null
+++ b/deps/asm-tree-6.0.jar
Binary files differ
diff --git a/deps/asm-util-6.0.jar b/deps/asm-util-6.0.jar
new file mode 100644
index 0000000..9f9671c
--- /dev/null
+++ b/deps/asm-util-6.0.jar
Binary files differ
diff --git a/deps/commons-compress-1.12.jar b/deps/commons-compress-1.12.jar
new file mode 100644
index 0000000..4867705
--- /dev/null
+++ b/deps/commons-compress-1.12.jar
Binary files differ
diff --git a/deps/fastutil-7.2.0.jar b/deps/fastutil-7.2.0.jar
new file mode 100644
index 0000000..d5487ee
--- /dev/null
+++ b/deps/fastutil-7.2.0.jar
Binary files differ
diff --git a/deps/guava-23.0.jar b/deps/guava-23.0.jar
new file mode 100644
index 0000000..a5c70c4
--- /dev/null
+++ b/deps/guava-23.0.jar
Binary files differ
diff --git a/deps/jopt-simple-4.6.jar b/deps/jopt-simple-4.6.jar
new file mode 100644
index 0000000..a963d1f
--- /dev/null
+++ b/deps/jopt-simple-4.6.jar
Binary files differ
diff --git a/deps/json-simple-1.1.1.jar b/deps/json-simple-1.1.1.jar
new file mode 100644
index 0000000..dfd5856
--- /dev/null
+++ b/deps/json-simple-1.1.1.jar
Binary files differ
diff --git a/etc/d8 b/etc/d8
new file mode 100755
index 0000000..1c95c0f
--- /dev/null
+++ b/etc/d8
@@ -0,0 +1,91 @@
+#!/bin/bash
+#
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+jarfile=d8.jar
+libdir="$progdir"
+
+if [ ! -r "$libdir/$jarfile" ]; then
+    # set d8.jar location for the SDK case
+    libdir="$libdir/lib"
+fi
+
+
+if [ ! -r "$libdir/$jarfile" ]; then
+    # set d8.jar location for the Android tree case
+    libdir=`dirname "$progdir"`/framework
+fi
+
+if [ ! -r "$libdir/$jarfile" ]; then
+    echo `basename "$prog"`": can't find $jarfile"
+    exit 1
+fi
+
+echo $progdir
+
+# By default, give d8 a max heap size of 1 gig. This can be overridden
+# by using a "-J" option (see below).
+defaultMx="-Xmx1024M"
+
+# The following will extract any initial parameters of the form
+# "-J<stuff>" from the command line and pass them to the Java
+# invocation (instead of to d8). This makes it possible for you to add
+# a command-line parameter such as "-JXmx256M" in your scripts, for
+# example. "java" (with no args) and "java -X" give a summary of
+# available options.
+
+javaOpts=""
+
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "x$1" : 'x-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    if expr "x${opt}" : "xXmx[0-9]" >/dev/null; then
+        defaultMx="no"
+    fi
+    shift
+done
+
+if [ "${defaultMx}" != "no" ]; then
+    javaOpts="${javaOpts} ${defaultMx}"
+fi
+
+if [ "$OSTYPE" = "cygwin" ]; then
+    # For Cygwin, convert the jarfile path into native Windows style.
+    jarpath=`cygpath -w "$libdir/$jarfile"`
+else
+    jarpath="$libdir/$jarfile"
+fi
+
+exec java $javaOpts -jar "$jarpath" "$@"
diff --git a/etc/r8 b/etc/r8
new file mode 100755
index 0000000..b5a1a6b
--- /dev/null
+++ b/etc/r8
@@ -0,0 +1,91 @@
+#!/bin/bash
+#
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Set up prog to be the path of this script, including following symlinks,
+# and set up progdir to be the fully-qualified pathname of its directory.
+prog="$0"
+while [ -h "${prog}" ]; do
+    newProg=`/bin/ls -ld "${prog}"`
+    newProg=`expr "${newProg}" : ".* -> \(.*\)$"`
+    if expr "x${newProg}" : 'x/' >/dev/null; then
+        prog="${newProg}"
+    else
+        progdir=`dirname "${prog}"`
+        prog="${progdir}/${newProg}"
+    fi
+done
+oldwd=`pwd`
+progdir=`dirname "${prog}"`
+cd "${progdir}"
+progdir=`pwd`
+prog="${progdir}"/`basename "${prog}"`
+cd "${oldwd}"
+
+jarfile=r8.jar
+libdir="$progdir"
+
+if [ ! -r "$libdir/$jarfile" ]; then
+    # set r8.jar location for the SDK case
+    libdir="$libdir/lib"
+fi
+
+
+if [ ! -r "$libdir/$jarfile" ]; then
+    # set r8.jar location for the Android tree case
+    libdir=`dirname "$progdir"`/framework
+fi
+
+if [ ! -r "$libdir/$jarfile" ]; then
+    echo `basename "$prog"`": can't find $jarfile"
+    exit 1
+fi
+
+echo $progdir
+
+# By default, give r8 a max heap size of 1 gig. This can be overridden
+# by using a "-J" option (see below).
+defaultMx="-Xmx1024M"
+
+# The following will extract any initial parameters of the form
+# "-J<stuff>" from the command line and pass them to the Java
+# invocation (instead of to r8). This makes it possible for you to add
+# a command-line parameter such as "-JXmx256M" in your scripts, for
+# example. "java" (with no args) and "java -X" give a summary of
+# available options.
+
+javaOpts=""
+
+while expr "x$1" : 'x-J' >/dev/null; do
+    opt=`expr "x$1" : 'x-J\(.*\)'`
+    javaOpts="${javaOpts} -${opt}"
+    if expr "x${opt}" : "xXmx[0-9]" >/dev/null; then
+        defaultMx="no"
+    fi
+    shift
+done
+
+if [ "${defaultMx}" != "no" ]; then
+    javaOpts="${javaOpts} ${defaultMx}"
+fi
+
+if [ "$OSTYPE" = "cygwin" ]; then
+    # For Cygwin, convert the jarfile path into native Windows style.
+    jarpath=`cygpath -w "$libdir/$jarfile"`
+else
+    jarpath="$libdir/$jarfile"
+fi
+
+exec java $javaOpts -jar "$jarpath" "$@"
diff --git a/manifest_d8.txt b/manifest_d8.txt
new file mode 100644
index 0000000..08edb39
--- /dev/null
+++ b/manifest_d8.txt
@@ -0,0 +1 @@
+Main-Class: com.android.tools.r8.compatdx.CompatDx
diff --git a/manifest_r8.txt b/manifest_r8.txt
new file mode 100644
index 0000000..ea82963
--- /dev/null
+++ b/manifest_r8.txt
@@ -0,0 +1 @@
+Main-Class: com.android.tools.r8.compatproguard.CompatProguard