8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_CLASSFILE_VMSYMBOLS_HPP
26 #define SHARE_VM_CLASSFILE_VMSYMBOLS_HPP
27
28 #include "oops/symbol.hpp"
29 #include "memory/iterator.hpp"
30 #include "trace/traceMacros.hpp"
31
32 // The class vmSymbols is a name space for fast lookup of
33 // symbols commonly used in the VM.
34 //
35 // Sample usage:
36 //
37 // Symbol* obj = vmSymbols::java_lang_Object();
38
39
40 // Useful sub-macros exported by this header file:
41
42 #define VM_SYMBOL_ENUM_NAME(name) name##_enum
43 #define VM_INTRINSIC_IGNORE(id, class, name, sig, flags) /*ignored*/
44 #define VM_SYMBOL_IGNORE(id, name) /*ignored*/
45 #define VM_ALIAS_IGNORE(id, id2) /*ignored*/
46
47
48 // Mapping function names to values. New entries should be added below.
49
50 #define VM_SYMBOLS_DO(template, do_alias) \
589 template(createMemoryManager_name, "createMemoryManager") \
590 template(createGarbageCollector_name, "createGarbageCollector") \
591 template(createMemoryPool_signature, "(Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMXBean;") \
592 template(createMemoryManager_signature, "(Ljava/lang/String;)Ljava/lang/management/MemoryManagerMXBean;") \
593 template(createGarbageCollector_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMXBean;") \
594 template(addThreadDumpForMonitors_name, "addThreadDumpForMonitors") \
595 template(addThreadDumpForSynchronizers_name, "addThreadDumpForSynchronizers") \
596 template(addThreadDumpForMonitors_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;[I)V") \
597 template(addThreadDumpForSynchronizers_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;)V") \
598 \
599 /* JVMTI/java.lang.instrument support and VM Attach mechanism */ \
600 template(sun_misc_VMSupport, "sun/misc/VMSupport") \
601 template(appendToClassPathForInstrumentation_name, "appendToClassPathForInstrumentation") \
602 do_alias(appendToClassPathForInstrumentation_signature, string_void_signature) \
603 template(serializePropertiesToByteArray_name, "serializePropertiesToByteArray") \
604 template(serializePropertiesToByteArray_signature, "()[B") \
605 template(serializeAgentPropertiesToByteArray_name, "serializeAgentPropertiesToByteArray") \
606 template(classRedefinedCount_name, "classRedefinedCount") \
607 template(classLoader_name, "classLoader") \
608 \
609 /* trace signatures */ \
610 TRACE_TEMPLATES(template) \
611 \
612 /*end*/
613
614 // Here are all the intrinsics known to the runtime and the CI.
615 // Each intrinsic consists of a public enum name (like _hashCode),
616 // followed by a specification of its klass, name, and signature:
617 // template(<id>, <klass>, <name>, <sig>, <FCODE>)
618 //
619 // If you add an intrinsic here, you must also define its name
620 // and signature as members of the VM symbols. The VM symbols for
621 // the intrinsic name and signature may be defined above.
622 //
623 // Because the VM_SYMBOLS_DO macro makes reference to VM_INTRINSICS_DO,
624 // you can also define an intrinsic's name and/or signature locally to the
625 // intrinsic, if this makes sense. (It often does make sense.)
626 //
627 // For example:
628 // do_intrinsic(_foo, java_lang_Object, foo_name, foo_signature, F_xx)
629 // do_name( foo_name, "foo")
630 // do_signature(foo_signature, "()F")
719 do_intrinsic(_bitCount_i, java_lang_Integer, bitCount_name, int_int_signature, F_S) \
720 do_intrinsic(_bitCount_l, java_lang_Long, bitCount_name, long_int_signature, F_S) \
721 \
722 do_intrinsic(_reverseBytes_i, java_lang_Integer, reverseBytes_name, int_int_signature, F_S) \
723 do_name( reverseBytes_name, "reverseBytes") \
724 do_intrinsic(_reverseBytes_l, java_lang_Long, reverseBytes_name, long_long_signature, F_S) \
725 /* (symbol reverseBytes_name defined above) */ \
726 do_intrinsic(_reverseBytes_c, java_lang_Character, reverseBytes_name, char_char_signature, F_S) \
727 /* (symbol reverseBytes_name defined above) */ \
728 do_intrinsic(_reverseBytes_s, java_lang_Short, reverseBytes_name, short_short_signature, F_S) \
729 /* (symbol reverseBytes_name defined above) */ \
730 \
731 do_intrinsic(_identityHashCode, java_lang_System, identityHashCode_name, object_int_signature, F_S) \
732 do_name( identityHashCode_name, "identityHashCode") \
733 do_intrinsic(_currentTimeMillis, java_lang_System, currentTimeMillis_name, void_long_signature, F_S) \
734 \
735 do_name( currentTimeMillis_name, "currentTimeMillis") \
736 do_intrinsic(_nanoTime, java_lang_System, nanoTime_name, void_long_signature, F_S) \
737 do_name( nanoTime_name, "nanoTime") \
738 \
739 TRACE_INTRINSICS(do_intrinsic, do_class, do_name, do_signature, do_alias) \
740 \
741 do_intrinsic(_arraycopy, java_lang_System, arraycopy_name, arraycopy_signature, F_S) \
742 do_name( arraycopy_name, "arraycopy") \
743 do_signature(arraycopy_signature, "(Ljava/lang/Object;ILjava/lang/Object;II)V") \
744 do_intrinsic(_isInterrupted, java_lang_Thread, isInterrupted_name, isInterrupted_signature, F_R) \
745 do_name( isInterrupted_name, "isInterrupted") \
746 do_signature(isInterrupted_signature, "(Z)Z") \
747 do_intrinsic(_currentThread, java_lang_Thread, currentThread_name, currentThread_signature, F_S) \
748 do_name( currentThread_name, "currentThread") \
749 do_signature(currentThread_signature, "()Ljava/lang/Thread;") \
750 \
751 /* reflective intrinsics, for java/lang/Class, etc. */ \
752 do_intrinsic(_isAssignableFrom, java_lang_Class, isAssignableFrom_name, class_boolean_signature, F_RN) \
753 do_name( isAssignableFrom_name, "isAssignableFrom") \
754 do_intrinsic(_isInstance, java_lang_Class, isInstance_name, object_boolean_signature, F_RN) \
755 do_name( isInstance_name, "isInstance") \
756 do_intrinsic(_getModifiers, java_lang_Class, getModifiers_name, void_int_signature, F_RN) \
757 do_name( getModifiers_name, "getModifiers") \
758 do_intrinsic(_isInterface, java_lang_Class, isInterface_name, void_boolean_signature, F_RN) \
759 do_name( isInterface_name, "isInterface") \
|
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_CLASSFILE_VMSYMBOLS_HPP
26 #define SHARE_VM_CLASSFILE_VMSYMBOLS_HPP
27
28 #include "jfr/support/jfrIntrinsics.hpp"
29 #include "memory/iterator.hpp"
30 #include "oops/symbol.hpp"
31 #include "utilities/macros.hpp"
32
33 // The class vmSymbols is a name space for fast lookup of
34 // symbols commonly used in the VM.
35 //
36 // Sample usage:
37 //
38 // Symbol* obj = vmSymbols::java_lang_Object();
39
40
41 // Useful sub-macros exported by this header file:
42
43 #define VM_SYMBOL_ENUM_NAME(name) name##_enum
44 #define VM_INTRINSIC_IGNORE(id, class, name, sig, flags) /*ignored*/
45 #define VM_SYMBOL_IGNORE(id, name) /*ignored*/
46 #define VM_ALIAS_IGNORE(id, id2) /*ignored*/
47
48
49 // Mapping function names to values. New entries should be added below.
50
51 #define VM_SYMBOLS_DO(template, do_alias) \
590 template(createMemoryManager_name, "createMemoryManager") \
591 template(createGarbageCollector_name, "createGarbageCollector") \
592 template(createMemoryPool_signature, "(Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMXBean;") \
593 template(createMemoryManager_signature, "(Ljava/lang/String;)Ljava/lang/management/MemoryManagerMXBean;") \
594 template(createGarbageCollector_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMXBean;") \
595 template(addThreadDumpForMonitors_name, "addThreadDumpForMonitors") \
596 template(addThreadDumpForSynchronizers_name, "addThreadDumpForSynchronizers") \
597 template(addThreadDumpForMonitors_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;[I)V") \
598 template(addThreadDumpForSynchronizers_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;)V") \
599 \
600 /* JVMTI/java.lang.instrument support and VM Attach mechanism */ \
601 template(sun_misc_VMSupport, "sun/misc/VMSupport") \
602 template(appendToClassPathForInstrumentation_name, "appendToClassPathForInstrumentation") \
603 do_alias(appendToClassPathForInstrumentation_signature, string_void_signature) \
604 template(serializePropertiesToByteArray_name, "serializePropertiesToByteArray") \
605 template(serializePropertiesToByteArray_signature, "()[B") \
606 template(serializeAgentPropertiesToByteArray_name, "serializeAgentPropertiesToByteArray") \
607 template(classRedefinedCount_name, "classRedefinedCount") \
608 template(classLoader_name, "classLoader") \
609 \
610 /* jfr signatures */ \
611 JFR_TEMPLATES(template) \
612 \
613 /*end*/
614
615 // Here are all the intrinsics known to the runtime and the CI.
616 // Each intrinsic consists of a public enum name (like _hashCode),
617 // followed by a specification of its klass, name, and signature:
618 // template(<id>, <klass>, <name>, <sig>, <FCODE>)
619 //
620 // If you add an intrinsic here, you must also define its name
621 // and signature as members of the VM symbols. The VM symbols for
622 // the intrinsic name and signature may be defined above.
623 //
624 // Because the VM_SYMBOLS_DO macro makes reference to VM_INTRINSICS_DO,
625 // you can also define an intrinsic's name and/or signature locally to the
626 // intrinsic, if this makes sense. (It often does make sense.)
627 //
628 // For example:
629 // do_intrinsic(_foo, java_lang_Object, foo_name, foo_signature, F_xx)
630 // do_name( foo_name, "foo")
631 // do_signature(foo_signature, "()F")
720 do_intrinsic(_bitCount_i, java_lang_Integer, bitCount_name, int_int_signature, F_S) \
721 do_intrinsic(_bitCount_l, java_lang_Long, bitCount_name, long_int_signature, F_S) \
722 \
723 do_intrinsic(_reverseBytes_i, java_lang_Integer, reverseBytes_name, int_int_signature, F_S) \
724 do_name( reverseBytes_name, "reverseBytes") \
725 do_intrinsic(_reverseBytes_l, java_lang_Long, reverseBytes_name, long_long_signature, F_S) \
726 /* (symbol reverseBytes_name defined above) */ \
727 do_intrinsic(_reverseBytes_c, java_lang_Character, reverseBytes_name, char_char_signature, F_S) \
728 /* (symbol reverseBytes_name defined above) */ \
729 do_intrinsic(_reverseBytes_s, java_lang_Short, reverseBytes_name, short_short_signature, F_S) \
730 /* (symbol reverseBytes_name defined above) */ \
731 \
732 do_intrinsic(_identityHashCode, java_lang_System, identityHashCode_name, object_int_signature, F_S) \
733 do_name( identityHashCode_name, "identityHashCode") \
734 do_intrinsic(_currentTimeMillis, java_lang_System, currentTimeMillis_name, void_long_signature, F_S) \
735 \
736 do_name( currentTimeMillis_name, "currentTimeMillis") \
737 do_intrinsic(_nanoTime, java_lang_System, nanoTime_name, void_long_signature, F_S) \
738 do_name( nanoTime_name, "nanoTime") \
739 \
740 JFR_INTRINSICS(do_intrinsic, do_class, do_name, do_signature, do_alias) \
741 \
742 do_intrinsic(_arraycopy, java_lang_System, arraycopy_name, arraycopy_signature, F_S) \
743 do_name( arraycopy_name, "arraycopy") \
744 do_signature(arraycopy_signature, "(Ljava/lang/Object;ILjava/lang/Object;II)V") \
745 do_intrinsic(_isInterrupted, java_lang_Thread, isInterrupted_name, isInterrupted_signature, F_R) \
746 do_name( isInterrupted_name, "isInterrupted") \
747 do_signature(isInterrupted_signature, "(Z)Z") \
748 do_intrinsic(_currentThread, java_lang_Thread, currentThread_name, currentThread_signature, F_S) \
749 do_name( currentThread_name, "currentThread") \
750 do_signature(currentThread_signature, "()Ljava/lang/Thread;") \
751 \
752 /* reflective intrinsics, for java/lang/Class, etc. */ \
753 do_intrinsic(_isAssignableFrom, java_lang_Class, isAssignableFrom_name, class_boolean_signature, F_RN) \
754 do_name( isAssignableFrom_name, "isAssignableFrom") \
755 do_intrinsic(_isInstance, java_lang_Class, isInstance_name, object_boolean_signature, F_RN) \
756 do_name( isInstance_name, "isInstance") \
757 do_intrinsic(_getModifiers, java_lang_Class, getModifiers_name, void_int_signature, F_RN) \
758 do_name( getModifiers_name, "getModifiers") \
759 do_intrinsic(_isInterface, java_lang_Class, isInterface_name, void_boolean_signature, F_RN) \
760 do_name( isInterface_name, "isInterface") \
|