--- a/jdk/src/java.base/share/classes/java/lang/invoke/BoundMethodHandle.java Mon Jul 04 13:00:15 2016 +0900
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/BoundMethodHandle.java Mon Jul 04 10:08:18 2016 +0200
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -26,17 +26,16 @@
package java.lang.invoke;
import jdk.internal.loader.BootLoader;
-import jdk.internal.vm.annotation.Stable;
import jdk.internal.org.objectweb.asm.ClassWriter;
import jdk.internal.org.objectweb.asm.FieldVisitor;
import jdk.internal.org.objectweb.asm.MethodVisitor;
+import jdk.internal.vm.annotation.Stable;
import sun.invoke.util.ValueConversions;
import sun.invoke.util.Wrapper;
import java.lang.invoke.LambdaForm.NamedFunction;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.reflect.Field;
-import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
@@ -168,12 +167,16 @@
}
@Override
- final Object internalValues() {
- Object[] boundValues = new Object[speciesData().fieldCount()];
- for (int i = 0; i < boundValues.length; ++i) {
- boundValues[i] = arg(i);
+ final String internalValues() {
+ int count = speciesData().fieldCount();
+ if (count == 1) {
+ return "[" + arg(0) + "]";
}
- return Arrays.asList(boundValues);
+ StringBuilder sb = new StringBuilder("[");
+ for (int i = 0; i < count; ++i) {
+ sb.append("\n ").append(i).append(": ( ").append(arg(i)).append(" )");
+ }
+ return sb.append("\n]").toString();
}
/*non-public*/ final Object arg(int i) {
@@ -869,7 +872,7 @@
*/
static final SpeciesData SPECIES_DATA = SpeciesData.EMPTY;
- private static final SpeciesData[] SPECIES_DATA_CACHE = new SpeciesData[5];
+ private static final SpeciesData[] SPECIES_DATA_CACHE = new SpeciesData[6];
private static SpeciesData checkCache(int size, String types) {
int idx = size - 1;
SpeciesData data = SPECIES_DATA_CACHE[idx];
@@ -877,9 +880,10 @@
SPECIES_DATA_CACHE[idx] = data = getSpeciesData(types);
return data;
}
- static SpeciesData speciesData_L() { return checkCache(1, "L"); }
- static SpeciesData speciesData_LL() { return checkCache(2, "LL"); }
- static SpeciesData speciesData_LLL() { return checkCache(3, "LLL"); }
- static SpeciesData speciesData_LLLL() { return checkCache(4, "LLLL"); }
- static SpeciesData speciesData_LLLLL() { return checkCache(5, "LLLLL"); }
+ static SpeciesData speciesData_L() { return checkCache(1, "L"); }
+ static SpeciesData speciesData_LL() { return checkCache(2, "LL"); }
+ static SpeciesData speciesData_LLL() { return checkCache(3, "LLL"); }
+ static SpeciesData speciesData_LLLL() { return checkCache(4, "LLLL"); }
+ static SpeciesData speciesData_LLLLL() { return checkCache(5, "LLLLL"); }
+ static SpeciesData speciesData_LLLLLL() { return checkCache(6, "LLLLLL"); }
}