# HG changeset patch # User darcy # Date 1364402333 25200 # Node ID ae03282ba501d02d6dbac0c20a88e1ac074293c5 # Parent 49602f599c085ec626ac2e018f658e66f058db48 7185456: (ann) Optimize Annotation handling in java/sun.reflect.* code for small number of annotations Reviewed-by: mduigou, jfranck --- a/src/share/classes/sun/reflect/annotation/AnnotationType.java Wed Mar 27 09:00:34 2013 -0700 +++ b/src/share/classes/sun/reflect/annotation/AnnotationType.java Wed Mar 27 09:38:53 2013 -0700 @@ -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. * * 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 * dynamic proxy, allowing for a simple isInstance test. */ - private final Map> memberTypes = new HashMap>(); + private final Map> memberTypes; /** * Member name -> default value mapping. */ - private final Map memberDefaults = - new HashMap(); + private final Map memberDefaults; /** * Member name -> Method object mapping. This (and its assoicated * accessor) are used only to generate AnnotationTypeMismatchExceptions. */ - private final Map members = new HashMap(); + private final Map members; /** * The retention policy for this annotation type. @@ -105,6 +104,9 @@ public class AnnotationType { } }); + memberTypes = new HashMap>(methods.length+1, 1.0f); + memberDefaults = new HashMap(0); + members = new HashMap(methods.length+1, 1.0f); for (Method method : methods) { if (method.getParameterTypes().length != 0) @@ -117,8 +119,6 @@ public class AnnotationType { Object defaultValue = method.getDefaultValue(); if (defaultValue != null) memberDefaults.put(name, defaultValue); - - members.put(name, method); } sun.misc.SharedSecrets.getJavaLangAccess().