Unique names for overloads by separating naming and reservation

Newer ART-vms will output the PC of error instructions if no debug
line information is present along with the method. Having a lot of
overloads, which we normally generate to have as few strings as
possible, will make debugging more difficult or require us to put in
debug information since we cannot distinguish two methods with the
same name in a stack trace.

This CL changes this by generating unique names for all methods when
targeting DEX. This will add a few more strings to the method pool but
it seems like this is outweighed by savings to the debug info.

Bug: 37830524
Bug: 18629172
Bug: 144877828
Change-Id: I6a751483131c5163e7d197a9760545bb24335469
diff --git a/build.gradle b/build.gradle
index 1fd0955..d3b511c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -838,7 +838,7 @@
     // Execute r8 commands against a stable r8 with relocated dependencies.
     // TODO(b/139725780): See if we can remove or lower the heap size (-Xmx6g).
     return [org.gradle.internal.jvm.Jvm.current().getJavaExecutable(),
-            "-Xmx6g", "-ea", "-jar", r8WithRelocatedDeps.outputs.files[0]] + args
+            "-Xmx8g", "-ea", "-jar", r8WithRelocatedDeps.outputs.files[0]] + args
 }
 
 def r8CfCommandLine(input, output, pgConfs = [], args = ["--release"], libs = []) {