reflection.hpp revision 665
665N/A * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 0N/A * published by the Free Software Foundation. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 0N/A * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 0N/A * CA 95054 USA or visit www.sun.com if you need additional information or 0N/A * have any questions. 0N/A// Class Reflection contains utility methods needed for implementing the 0N/A// Used by functions in the JVM interface. 0N/A// NOTE that in JDK 1.4 most of reflection is now implemented in Java 0N/A// using dynamic bytecode generation. The Array class has not yet been 0N/A// rewritten using bytecodes; if it were, most of the rest of this 0N/A// class could go away, as well as a few more entry points in jvm.cpp. 0N/A // Creating new java.lang.reflect.xxx wrappers 0N/A // Constants defined by java reflection api classes 0N/A // Boxing. Returns boxed value of appropriate type. Throws IllegalArgumentException. 0N/A // Unboxing. Returns type code and sets value. 0N/A // Widening of basic types. Throws IllegalArgumentException. 0N/A // Reflective array access. Returns type code. Throws ArrayIndexOutOfBoundsException. 0N/A // Returns mirror on array element type (NULL for basic type arrays and non-arrays). 0N/A // inner class reflection 665N/A // raise an ICCE unless the required relationship can be proven to hold 665N/A // If inner_is_member, require the inner to be a member of the outer. 665N/A // If !inner_is_member, require the inner to be anonymous (a non-member). 665N/A // Caller is responsible for figuring out in advance which case must be true. 0N/A // Support for reflection based on dynamic bytecode generation (JDK 1.4) 0N/A // Create a java.lang.reflect.Method object based on a method 0N/A // Create a java.lang.reflect.Constructor object based on a method 0N/A // Create a java.lang.reflect.Field object based on a field descriptor 0N/A //--------------------------------------------------------------------------- 0N/A // Support for old native code-based reflection (pre-JDK 1.4) 0N/A // NOTE: the method and constructor invocation code is still used 0N/A //--------------------------------------------------------------------------- 0N/A // method resolution for invoke 0N/A // Method call (shared by invoke_method and invoke_constructor) 0N/A // Narrowing of basic types. Used to create correct jvalues for 0N/A // boolean, byte, char and short return return values from interpreter 0N/A // which are returned as ints. Throws IllegalArgumentException. 0N/A // Creating new java.lang.reflect.xxx wrappers 0N/A // Field lookup and verification. 0N/A // Reflective field access. Returns type code. Throws IllegalArgumentException. 0N/A // Reflective lookup of fields. Returns java.lang.reflect.Field instances. 0N/A // Reflective lookup of methods. Returns java.lang.reflect.Method instances. 0N/A // Reflective lookup of constructors. Returns java.lang.reflect.Constructor instances. 0N/A // Method invokation through java.lang.reflect.Method 0N/A // Method invokation through java.lang.reflect.Constructor 0N/A#
endif /* SUPPORT_OLD_REFLECTION */