提交 4050f67e 编写于 作者: J jrose

7030453: JSR 292 ClassValue.get method is too slow

Summary: Implement ClassValue cooperatively with Class like ThreadLocal with Thread.
Reviewed-by: twisti, mduigou
上级 d9846782
......@@ -3118,4 +3118,9 @@ public final
AnnotationType getAnnotationType() {
return annotationType;
}
/* Backing store of user-defined values pertaining to this class.
* Maintained by the ClassValue class.
*/
transient ClassValue.ClassValueMap classValueMap;
}
......@@ -57,7 +57,7 @@ public class ClassValueTest {
}
}
static final Class[] CLASSES = {
static final Class<?>[] CLASSES = {
String.class,
Integer.class,
int.class,
......@@ -69,11 +69,11 @@ public class ClassValueTest {
@Test
public void testGet() {
countForCV1 = 0;
for (Class c : CLASSES) {
for (Class<?> c : CLASSES) {
assertEquals(nameForCV1(c), CV1.get(c));
}
assertEquals(CLASSES.length, countForCV1);
for (Class c : CLASSES) {
for (Class<?> c : CLASSES) {
assertEquals(nameForCV1(c), CV1.get(c));
}
assertEquals(CLASSES.length, countForCV1);
......@@ -81,7 +81,7 @@ public class ClassValueTest {
@Test
public void testRemove() {
for (Class c : CLASSES) {
for (Class<?> c : CLASSES) {
CV1.get(c);
}
countForCV1 = 0;
......@@ -90,7 +90,7 @@ public class ClassValueTest {
CV1.remove(CLASSES[i]);
}
assertEquals(0, countForCV1); // no change
for (Class c : CLASSES) {
for (Class<?> c : CLASSES) {
assertEquals(nameForCV1(c), CV1.get(c));
}
assertEquals(REMCOUNT, countForCV1);
......@@ -120,7 +120,7 @@ public class ClassValueTest {
for (int pass = 0; pass <= 2; pass++) {
for (int i1 = 0; i1 < CVN_COUNT1; i1++) {
eachClass:
for (Class c : CLASSES) {
for (Class<?> c : CLASSES) {
for (int i2 = 0; i2 < CVN_COUNT2; i2++) {
int n = i1*CVN_COUNT2 + i2;
assertEquals(0, countForCVN);
......@@ -152,8 +152,10 @@ public class ClassValueTest {
}
}
assertEquals(countForCVN, 0);
for (int n = 0; n < cvns.length; n++) {
for (Class c : CLASSES) {
System.out.println("[rechecking values]");
for (int i = 0; i < cvns.length * 10; i++) {
int n = i % cvns.length;
for (Class<?> c : CLASSES) {
assertEquals(nameForCVN(c, n), cvns[n].get(c));
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册