7185456: (ann) Optimize Annotation handling in java/sun.reflect.* code for small number of annotations
Reviewed-by: mduigou, jfranck
This commit is contained in:
parent
2ffe97f06e
commit
3987724a24
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2006, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -45,19 +45,18 @@ public class AnnotationType {
|
|||||||
* types. This matches the return value that must be used for a
|
* types. This matches the return value that must be used for a
|
||||||
* dynamic proxy, allowing for a simple isInstance test.
|
* dynamic proxy, allowing for a simple isInstance test.
|
||||||
*/
|
*/
|
||||||
private final Map<String, Class<?>> memberTypes = new HashMap<String,Class<?>>();
|
private final Map<String, Class<?>> memberTypes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Member name -> default value mapping.
|
* Member name -> default value mapping.
|
||||||
*/
|
*/
|
||||||
private final Map<String, Object> memberDefaults =
|
private final Map<String, Object> memberDefaults;
|
||||||
new HashMap<String, Object>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Member name -> Method object mapping. This (and its assoicated
|
* Member name -> Method object mapping. This (and its assoicated
|
||||||
* accessor) are used only to generate AnnotationTypeMismatchExceptions.
|
* accessor) are used only to generate AnnotationTypeMismatchExceptions.
|
||||||
*/
|
*/
|
||||||
private final Map<String, Method> members = new HashMap<String, Method>();
|
private final Map<String, Method> members;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The retention policy for this annotation type.
|
* The retention policy for this annotation type.
|
||||||
@ -105,6 +104,9 @@ public class AnnotationType {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
memberTypes = new HashMap<String,Class<?>>(methods.length+1, 1.0f);
|
||||||
|
memberDefaults = new HashMap<String, Object>(0);
|
||||||
|
members = new HashMap<String, Method>(methods.length+1, 1.0f);
|
||||||
|
|
||||||
for (Method method : methods) {
|
for (Method method : methods) {
|
||||||
if (method.getParameterTypes().length != 0)
|
if (method.getParameterTypes().length != 0)
|
||||||
@ -117,8 +119,6 @@ public class AnnotationType {
|
|||||||
Object defaultValue = method.getDefaultValue();
|
Object defaultValue = method.getDefaultValue();
|
||||||
if (defaultValue != null)
|
if (defaultValue != null)
|
||||||
memberDefaults.put(name, defaultValue);
|
memberDefaults.put(name, defaultValue);
|
||||||
|
|
||||||
members.put(name, method);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sun.misc.SharedSecrets.getJavaLangAccess().
|
sun.misc.SharedSecrets.getJavaLangAccess().
|
||||||
|
Loading…
x
Reference in New Issue
Block a user