1 /* 2 * Copyright (c) 1997, 2023, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 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_CLASSFILE_VMSYMBOLS_HPP 26 #define SHARE_CLASSFILE_VMSYMBOLS_HPP 27 28 #include "classfile/vmIntrinsics.hpp" 29 #include "jvmci/vmSymbols_jvmci.hpp" 30 #include "memory/iterator.hpp" 31 #include "oops/symbol.hpp" 32 #include "utilities/macros.hpp" 33 #include "utilities/enumIterator.hpp" 34 35 class SerializeClosure; 36 37 // The class vmSymbols is a name space for fast lookup of 38 // symbols commonly used in the VM. 39 // 40 // Sample usage: 41 // 42 // Symbol* obj = vmSymbols::java_lang_Object(); 43 44 45 // Useful sub-macros exported by this header file: 46 47 #define VM_SYMBOL_ENUM_NAME_(name) name##_enum 48 #define VM_SYMBOL_ENUM_NAME(name) vmSymbolID::VM_SYMBOL_ENUM_NAME_(name) 49 #define VM_INTRINSIC_IGNORE(id, class, name, sig, flags) /*ignored*/ 50 #define VM_SYMBOL_IGNORE(id, name) /*ignored*/ 51 #define VM_ALIAS_IGNORE(id, id2) /*ignored*/ 52 53 // Mapping function names to values. New entries should be added below. 54 55 #define VM_SYMBOLS_DO(template, do_alias) \ 56 /* commonly used class, package, module names */ \ 57 template(java_base, "java.base") \ 58 template(java_lang_System, "java/lang/System") \ 59 template(java_lang_Object, "java/lang/Object") \ 60 template(java_lang_Class, "java/lang/Class") \ 61 template(java_lang_Package, "java/lang/Package") \ 62 template(java_lang_Module, "java/lang/Module") \ 63 template(java_lang_String, "java/lang/String") \ 64 template(java_lang_StringLatin1, "java/lang/StringLatin1") \ 65 template(java_lang_StringUTF16, "java/lang/StringUTF16") \ 66 template(java_lang_Thread, "java/lang/Thread") \ 67 template(java_lang_Thread_FieldHolder, "java/lang/Thread$FieldHolder") \ 68 template(java_lang_Thread_Constants, "java/lang/Thread$Constants") \ 69 template(java_lang_ThreadGroup, "java/lang/ThreadGroup") \ 70 template(java_lang_BaseVirtualThread, "java/lang/BaseVirtualThread") \ 71 template(java_lang_VirtualThread, "java/lang/VirtualThread") \ 72 template(java_lang_BoundVirtualThread, "java/lang/ThreadBuilders$BoundVirtualThread") \ 73 template(java_lang_Cloneable, "java/lang/Cloneable") \ 74 template(java_lang_Throwable, "java/lang/Throwable") \ 75 template(java_lang_ClassLoader, "java/lang/ClassLoader") \ 76 template(java_lang_Runnable, "java/lang/Runnable") \ 77 template(jdk_internal_vm_ContinuationScope, "jdk/internal/vm/ContinuationScope") \ 78 template(jdk_internal_vm_StackChunk, "jdk/internal/vm/StackChunk") \ 79 template(java_lang_Boolean, "java/lang/Boolean") \ 80 template(java_lang_Character, "java/lang/Character") \ 81 template(java_lang_Character_CharacterCache, "java/lang/Character$CharacterCache") \ 82 template(java_lang_CharacterDataLatin1, "java/lang/CharacterDataLatin1") \ 83 template(java_lang_Float, "java/lang/Float") \ 84 template(java_lang_Double, "java/lang/Double") \ 85 template(java_lang_Byte, "java/lang/Byte") \ 86 template(java_lang_Byte_ByteCache, "java/lang/Byte$ByteCache") \ 87 template(java_lang_Short, "java/lang/Short") \ 88 template(java_lang_Short_ShortCache, "java/lang/Short$ShortCache") \ 89 template(java_lang_Integer, "java/lang/Integer") \ 90 template(java_lang_Integer_IntegerCache, "java/lang/Integer$IntegerCache") \ 91 template(java_lang_Long, "java/lang/Long") \ 92 template(java_lang_Long_LongCache, "java/lang/Long$LongCache") \ 93 \ 94 template(jdk_internal_vm_vector_VectorSupport, "jdk/internal/vm/vector/VectorSupport") \ 95 template(jdk_internal_vm_vector_VectorPayload, "jdk/internal/vm/vector/VectorSupport$VectorPayload") \ 96 template(jdk_internal_vm_vector_Vector, "jdk/internal/vm/vector/VectorSupport$Vector") \ 97 template(jdk_internal_vm_vector_VectorMask, "jdk/internal/vm/vector/VectorSupport$VectorMask") \ 98 template(jdk_internal_vm_vector_VectorShuffle, "jdk/internal/vm/vector/VectorSupport$VectorShuffle") \ 99 template(payload_name, "payload") \ 100 template(ETYPE_name, "ETYPE") \ 101 template(VLENGTH_name, "VLENGTH") \ 102 \ 103 template(jdk_internal_vm_FillerObject, "jdk/internal/vm/FillerObject") \ 104 \ 105 template(java_lang_Shutdown, "java/lang/Shutdown") \ 106 template(java_lang_ref_Reference, "java/lang/ref/Reference") \ 107 template(java_lang_ref_SoftReference, "java/lang/ref/SoftReference") \ 108 template(java_lang_ref_WeakReference, "java/lang/ref/WeakReference") \ 109 template(java_lang_ref_FinalReference, "java/lang/ref/FinalReference") \ 110 template(java_lang_ref_PhantomReference, "java/lang/ref/PhantomReference") \ 111 template(java_lang_ref_Finalizer, "java/lang/ref/Finalizer") \ 112 template(java_lang_reflect_AccessibleObject, "java/lang/reflect/AccessibleObject") \ 113 template(java_lang_reflect_Method, "java/lang/reflect/Method") \ 114 template(java_lang_reflect_Constructor, "java/lang/reflect/Constructor") \ 115 template(java_lang_reflect_Field, "java/lang/reflect/Field") \ 116 template(java_lang_reflect_Parameter, "java/lang/reflect/Parameter") \ 117 template(java_lang_reflect_Array, "java/lang/reflect/Array") \ 118 template(java_lang_reflect_RecordComponent, "java/lang/reflect/RecordComponent") \ 119 template(java_lang_StringBuffer, "java/lang/StringBuffer") \ 120 template(java_lang_StringBuilder, "java/lang/StringBuilder") \ 121 template(java_lang_CharSequence, "java/lang/CharSequence") \ 122 template(java_lang_SecurityManager, "java/lang/SecurityManager") \ 123 template(java_lang_ScopedValue, "java/lang/ScopedValue") \ 124 template(java_lang_ScopedValue_Carrier, "java/lang/ScopedValue$Carrier") \ 125 template(java_security_AccessControlContext, "java/security/AccessControlContext") \ 126 template(java_security_AccessController, "java/security/AccessController") \ 127 template(executePrivileged_name, "executePrivileged") \ 128 template(java_security_CodeSource, "java/security/CodeSource") \ 129 template(java_security_ProtectionDomain, "java/security/ProtectionDomain") \ 130 template(java_security_SecureClassLoader, "java/security/SecureClassLoader") \ 131 template(java_net_URL, "java/net/URL") \ 132 template(java_net_URLClassLoader, "java/net/URLClassLoader") \ 133 template(java_util_jar_Manifest, "java/util/jar/Manifest") \ 134 template(java_io_OutputStream, "java/io/OutputStream") \ 135 template(java_io_Reader, "java/io/Reader") \ 136 template(java_io_BufferedReader, "java/io/BufferedReader") \ 137 template(java_io_File, "java/io/File") \ 138 template(java_io_FileInputStream, "java/io/FileInputStream") \ 139 template(java_io_ByteArrayInputStream, "java/io/ByteArrayInputStream") \ 140 template(java_io_Serializable, "java/io/Serializable") \ 141 template(java_nio_Buffer, "java/nio/Buffer") \ 142 template(java_util_Arrays, "java/util/Arrays") \ 143 template(java_util_Objects, "java/util/Objects") \ 144 template(java_util_Properties, "java/util/Properties") \ 145 template(java_util_Vector, "java/util/Vector") \ 146 template(java_util_AbstractList, "java/util/AbstractList") \ 147 template(java_util_Hashtable, "java/util/Hashtable") \ 148 template(java_util_DualPivotQuicksort, "java/util/DualPivotQuicksort") \ 149 template(java_lang_Compiler, "java/lang/Compiler") \ 150 template(jdk_internal_misc_Signal, "jdk/internal/misc/Signal") \ 151 template(jdk_internal_util_Preconditions, "jdk/internal/util/Preconditions") \ 152 template(java_lang_AssertionStatusDirectives, "java/lang/AssertionStatusDirectives") \ 153 template(getBootClassPathEntryForClass_name, "getBootClassPathEntryForClass") \ 154 template(jdk_internal_vm_PostVMInitHook, "jdk/internal/vm/PostVMInitHook") \ 155 template(sun_net_www_ParseUtil, "sun/net/www/ParseUtil") \ 156 template(java_util_Iterator, "java/util/Iterator") \ 157 template(java_lang_Record, "java/lang/Record") \ 158 template(sun_instrument_InstrumentationImpl, "sun/instrument/InstrumentationImpl") \ 159 template(sun_invoke_util_ValueConversions, "sun/invoke/util/ValueConversions") \ 160 \ 161 template(jdk_internal_loader_NativeLibraries, "jdk/internal/loader/NativeLibraries") \ 162 template(jdk_internal_loader_BuiltinClassLoader, "jdk/internal/loader/BuiltinClassLoader") \ 163 template(jdk_internal_loader_ClassLoaders_AppClassLoader, "jdk/internal/loader/ClassLoaders$AppClassLoader") \ 164 template(jdk_internal_loader_ClassLoaders_PlatformClassLoader, "jdk/internal/loader/ClassLoaders$PlatformClassLoader") \ 165 template(java_lang_Deprecated, "Ljava/lang/Deprecated;") \ 166 template(since, "since") \ 167 template(for_removal, "forRemoval") \ 168 /* Java runtime version access */ \ 169 template(java_lang_VersionProps, "java/lang/VersionProps") \ 170 template(java_version_name, "java_version") \ 171 template(java_runtime_name_name, "java_runtime_name") \ 172 template(java_runtime_version_name, "java_runtime_version") \ 173 template(java_runtime_vendor_version_name, "VENDOR_VERSION") \ 174 template(java_runtime_vendor_vm_bug_url_name, "VENDOR_URL_VM_BUG") \ 175 \ 176 /* system initialization */ \ 177 template(initPhase1_name, "initPhase1") \ 178 template(initPhase2_name, "initPhase2") \ 179 template(initPhase3_name, "initPhase3") \ 180 template(java_lang_module_init_signature, "(Ljava/lang/ClassLoader;Ljava/lang/String;)V") \ 181 \ 182 /* class file format tags */ \ 183 template(tag_source_file, "SourceFile") \ 184 template(tag_inner_classes, "InnerClasses") \ 185 template(tag_nest_members, "NestMembers") \ 186 template(tag_nest_host, "NestHost") \ 187 template(tag_preload, "Preload") \ 188 template(tag_constant_value, "ConstantValue") \ 189 template(tag_code, "Code") \ 190 template(tag_exceptions, "Exceptions") \ 191 template(tag_line_number_table, "LineNumberTable") \ 192 template(tag_local_variable_table, "LocalVariableTable") \ 193 template(tag_local_variable_type_table, "LocalVariableTypeTable") \ 194 template(tag_method_parameters, "MethodParameters") \ 195 template(tag_stack_map_table, "StackMapTable") \ 196 template(tag_synthetic, "Synthetic") \ 197 template(tag_deprecated, "Deprecated") \ 198 template(tag_source_debug_extension, "SourceDebugExtension") \ 199 template(tag_signature, "Signature") \ 200 template(tag_record, "Record") \ 201 template(tag_runtime_visible_annotations, "RuntimeVisibleAnnotations") \ 202 template(tag_runtime_invisible_annotations, "RuntimeInvisibleAnnotations") \ 203 template(tag_runtime_visible_parameter_annotations, "RuntimeVisibleParameterAnnotations") \ 204 template(tag_runtime_invisible_parameter_annotations,"RuntimeInvisibleParameterAnnotations") \ 205 template(tag_annotation_default, "AnnotationDefault") \ 206 template(tag_runtime_visible_type_annotations, "RuntimeVisibleTypeAnnotations") \ 207 template(tag_runtime_invisible_type_annotations, "RuntimeInvisibleTypeAnnotations") \ 208 template(tag_enclosing_method, "EnclosingMethod") \ 209 template(tag_bootstrap_methods, "BootstrapMethods") \ 210 template(tag_permitted_subclasses, "PermittedSubclasses") \ 211 \ 212 /* exception klasses: at least all exceptions thrown by the VM have entries here */ \ 213 template(java_lang_ArithmeticException, "java/lang/ArithmeticException") \ 214 template(java_lang_ArrayIndexOutOfBoundsException, "java/lang/ArrayIndexOutOfBoundsException") \ 215 template(java_lang_ArrayStoreException, "java/lang/ArrayStoreException") \ 216 template(java_lang_ClassCastException, "java/lang/ClassCastException") \ 217 template(java_lang_ClassNotFoundException, "java/lang/ClassNotFoundException") \ 218 template(java_lang_CloneNotSupportedException, "java/lang/CloneNotSupportedException") \ 219 template(java_lang_IllegalAccessException, "java/lang/IllegalAccessException") \ 220 template(java_lang_IllegalArgumentException, "java/lang/IllegalArgumentException") \ 221 template(java_lang_IllegalStateException, "java/lang/IllegalStateException") \ 222 template(java_lang_IllegalMonitorStateException, "java/lang/IllegalMonitorStateException") \ 223 template(java_lang_IllegalThreadStateException, "java/lang/IllegalThreadStateException") \ 224 template(java_lang_IndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException") \ 225 template(java_lang_InstantiationException, "java/lang/InstantiationException") \ 226 template(java_lang_InstantiationError, "java/lang/InstantiationError") \ 227 template(java_lang_InterruptedException, "java/lang/InterruptedException") \ 228 template(java_lang_BootstrapMethodError, "java/lang/BootstrapMethodError") \ 229 template(java_lang_LinkageError, "java/lang/LinkageError") \ 230 template(java_lang_NegativeArraySizeException, "java/lang/NegativeArraySizeException") \ 231 template(java_lang_NoSuchFieldException, "java/lang/NoSuchFieldException") \ 232 template(java_lang_NoSuchMethodException, "java/lang/NoSuchMethodException") \ 233 template(java_lang_NullPointerException, "java/lang/NullPointerException") \ 234 template(java_lang_StringIndexOutOfBoundsException, "java/lang/StringIndexOutOfBoundsException")\ 235 template(java_lang_UnsupportedOperationException, "java/lang/UnsupportedOperationException") \ 236 template(java_lang_InvalidClassException, "java/lang/InvalidClassException") \ 237 template(java_lang_reflect_InvocationTargetException, "java/lang/reflect/InvocationTargetException") \ 238 template(java_lang_Exception, "java/lang/Exception") \ 239 template(java_lang_RuntimeException, "java/lang/RuntimeException") \ 240 template(java_io_IOException, "java/io/IOException") \ 241 template(java_security_PrivilegedActionException, "java/security/PrivilegedActionException") \ 242 \ 243 /* error klasses: at least all errors thrown by the VM have entries here */ \ 244 template(java_lang_AbstractMethodError, "java/lang/AbstractMethodError") \ 245 template(java_lang_ClassCircularityError, "java/lang/ClassCircularityError") \ 246 template(java_lang_ClassFormatError, "java/lang/ClassFormatError") \ 247 template(java_lang_UnsupportedClassVersionError, "java/lang/UnsupportedClassVersionError") \ 248 template(java_lang_Error, "java/lang/Error") \ 249 template(java_lang_ExceptionInInitializerError, "java/lang/ExceptionInInitializerError") \ 250 template(java_lang_IllegalAccessError, "java/lang/IllegalAccessError") \ 251 template(java_lang_IncompatibleClassChangeError, "java/lang/IncompatibleClassChangeError") \ 252 template(java_lang_InternalError, "java/lang/InternalError") \ 253 template(java_lang_NoClassDefFoundError, "java/lang/NoClassDefFoundError") \ 254 template(java_lang_NoSuchFieldError, "java/lang/NoSuchFieldError") \ 255 template(java_lang_NoSuchMethodError, "java/lang/NoSuchMethodError") \ 256 template(java_lang_OutOfMemoryError, "java/lang/OutOfMemoryError") \ 257 template(java_lang_UnsatisfiedLinkError, "java/lang/UnsatisfiedLinkError") \ 258 template(java_lang_VerifyError, "java/lang/VerifyError") \ 259 template(java_lang_SecurityException, "java/lang/SecurityException") \ 260 template(java_lang_VirtualMachineError, "java/lang/VirtualMachineError") \ 261 template(java_lang_StackOverflowError, "java/lang/StackOverflowError") \ 262 template(java_lang_StackTraceElement, "java/lang/StackTraceElement") \ 263 \ 264 /* Concurrency support */ \ 265 template(java_util_concurrent_locks_AbstractOwnableSynchronizer, "java/util/concurrent/locks/AbstractOwnableSynchronizer") \ 266 template(java_util_concurrent_atomic_AtomicIntegerFieldUpdater_Impl, "java/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl") \ 267 template(java_util_concurrent_atomic_AtomicLongFieldUpdater_CASUpdater, "java/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater") \ 268 template(java_util_concurrent_atomic_AtomicLongFieldUpdater_LockedUpdater, "java/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater") \ 269 template(java_util_concurrent_atomic_AtomicReferenceFieldUpdater_Impl, "java/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl") \ 270 template(jdk_internal_vm_annotation_Contended_signature, "Ljdk/internal/vm/annotation/Contended;") \ 271 template(jdk_internal_vm_annotation_ReservedStackAccess_signature, "Ljdk/internal/vm/annotation/ReservedStackAccess;") \ 272 template(jdk_internal_vm_annotation_ImplicitlyConstructible_signature, "Ljdk/internal/vm/annotation/ImplicitlyConstructible;") \ 273 template(jdk_internal_vm_annotation_LooselyConsistentValue_signature, "Ljdk/internal/vm/annotation/LooselyConsistentValue;") \ 274 template(jdk_internal_vm_annotation_NullRestricted_signature, "Ljdk/internal/vm/annotation/NullRestricted;") \ 275 template(jdk_internal_ValueBased_signature, "Ljdk/internal/ValueBased;") \ 276 \ 277 /* class symbols needed by intrinsics */ \ 278 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, template, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) \ 279 \ 280 /* Support for reflection based on dynamic bytecode generation (JDK 1.4 and above) */ \ 281 \ 282 template(jdk_internal_reflect, "jdk/internal/reflect") \ 283 template(reflect_MethodAccessorImpl, "jdk/internal/reflect/MethodAccessorImpl") \ 284 template(reflect_DelegatingClassLoader, "jdk/internal/reflect/DelegatingClassLoader") \ 285 template(reflect_Reflection, "jdk/internal/reflect/Reflection") \ 286 template(reflect_CallerSensitive, "jdk/internal/reflect/CallerSensitive") \ 287 template(reflect_CallerSensitive_signature, "Ljdk/internal/reflect/CallerSensitive;") \ 288 template(reflect_DirectConstructorHandleAccessor_NativeAccessor, "jdk/internal/reflect/DirectConstructorHandleAccessor$NativeAccessor") \ 289 template(reflect_SerializationConstructorAccessorImpl, "jdk/internal/reflect/SerializationConstructorAccessorImpl") \ 290 template(checkedExceptions_name, "checkedExceptions") \ 291 template(clazz_name, "clazz") \ 292 template(exceptionTypes_name, "exceptionTypes") \ 293 template(modifiers_name, "modifiers") \ 294 template(invokeBasic_name, "invokeBasic") \ 295 template(linkToVirtual_name, "linkToVirtual") \ 296 template(linkToStatic_name, "linkToStatic") \ 297 template(linkToSpecial_name, "linkToSpecial") \ 298 template(linkToInterface_name, "linkToInterface") \ 299 template(linkToNative_name, "linkToNative") \ 300 template(compiledLambdaForm_name, "<compiledLambdaForm>") /*fake name*/ \ 301 template(star_name, "*") /*not really a name*/ \ 302 template(invoke_name, "invoke") \ 303 template(parameterTypes_name, "parameterTypes") \ 304 template(returnType_name, "returnType") \ 305 template(signature_name, "signature") \ 306 template(slot_name, "slot") \ 307 template(blackhole_name, "<blackhole>") /*fake name*/ \ 308 \ 309 /* Support for annotations (JDK 1.5 and above) */ \ 310 \ 311 template(annotations_name, "annotations") \ 312 template(index_name, "index") \ 313 template(executable_name, "executable") \ 314 template(parameter_annotations_name, "parameterAnnotations") \ 315 template(annotation_default_name, "annotationDefault") \ 316 template(reflect_ConstantPool, "jdk/internal/reflect/ConstantPool") \ 317 template(base_name, "base") \ 318 /* Type Annotations (JDK 8 and above) */ \ 319 template(type_annotations_name, "typeAnnotations") \ 320 \ 321 /* Intrinsic Annotation (JDK 9 and above) */ \ 322 template(jdk_internal_vm_annotation_DontInline_signature, "Ljdk/internal/vm/annotation/DontInline;") \ 323 template(jdk_internal_vm_annotation_ForceInline_signature, "Ljdk/internal/vm/annotation/ForceInline;") \ 324 template(jdk_internal_vm_annotation_Hidden_signature, "Ljdk/internal/vm/annotation/Hidden;") \ 325 template(jdk_internal_misc_Scoped_signature, "Ljdk/internal/misc/ScopedMemoryAccess$Scoped;") \ 326 template(jdk_internal_vm_annotation_IntrinsicCandidate_signature, "Ljdk/internal/vm/annotation/IntrinsicCandidate;") \ 327 template(jdk_internal_vm_annotation_Stable_signature, "Ljdk/internal/vm/annotation/Stable;") \ 328 \ 329 template(jdk_internal_vm_annotation_ChangesCurrentThread_signature, "Ljdk/internal/vm/annotation/ChangesCurrentThread;") \ 330 template(jdk_internal_vm_annotation_JvmtiMountTransition_signature, "Ljdk/internal/vm/annotation/JvmtiMountTransition;") \ 331 \ 332 /* Support for JSR 292 & invokedynamic (JDK 1.7 and above) */ \ 333 template(java_lang_invoke_CallSite, "java/lang/invoke/CallSite") \ 334 template(java_lang_invoke_ConstantCallSite, "java/lang/invoke/ConstantCallSite") \ 335 template(java_lang_invoke_DirectMethodHandle, "java/lang/invoke/DirectMethodHandle") \ 336 template(java_lang_invoke_MutableCallSite, "java/lang/invoke/MutableCallSite") \ 337 template(java_lang_invoke_VolatileCallSite, "java/lang/invoke/VolatileCallSite") \ 338 template(java_lang_invoke_MethodHandle, "java/lang/invoke/MethodHandle") \ 339 template(java_lang_invoke_VarHandle, "java/lang/invoke/VarHandle") \ 340 template(java_lang_invoke_MethodType, "java/lang/invoke/MethodType") \ 341 template(java_lang_invoke_MethodType_signature, "Ljava/lang/invoke/MethodType;") \ 342 template(java_lang_invoke_ResolvedMethodName_signature, "Ljava/lang/invoke/ResolvedMethodName;")\ 343 template(java_lang_invoke_MemberName_signature, "Ljava/lang/invoke/MemberName;") \ 344 template(java_lang_invoke_LambdaForm_signature, "Ljava/lang/invoke/LambdaForm;") \ 345 template(java_lang_invoke_MethodHandle_signature, "Ljava/lang/invoke/MethodHandle;") \ 346 /* internal classes known only to the JVM: */ \ 347 template(java_lang_invoke_MemberName, "java/lang/invoke/MemberName") \ 348 template(java_lang_invoke_ResolvedMethodName, "java/lang/invoke/ResolvedMethodName") \ 349 template(java_lang_invoke_MethodHandleNatives, "java/lang/invoke/MethodHandleNatives") \ 350 template(java_lang_invoke_MethodHandleNatives_CallSiteContext, "java/lang/invoke/MethodHandleNatives$CallSiteContext") \ 351 template(java_lang_invoke_LambdaForm, "java/lang/invoke/LambdaForm") \ 352 template(java_lang_invoke_InjectedProfile_signature, "Ljava/lang/invoke/InjectedProfile;") \ 353 template(java_lang_invoke_LambdaForm_Compiled_signature, "Ljava/lang/invoke/LambdaForm$Compiled;") \ 354 template(java_lang_invoke_MethodHandleNatives_CallSiteContext_signature, "Ljava/lang/invoke/MethodHandleNatives$CallSiteContext;") \ 355 /* internal up-calls made only by the JVM, via class sun.invoke.MethodHandleNatives: */ \ 356 template(findMethodHandleType_name, "findMethodHandleType") \ 357 template(findMethodHandleType_signature, "(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;") \ 358 template(invokeExact_name, "invokeExact") \ 359 template(linkMethodHandleConstant_name, "linkMethodHandleConstant") \ 360 template(asFixedArity_name, "asFixedArity") \ 361 template(asFixedArity_signature, "()Ljava/lang/invoke/MethodHandle;") \ 362 template(linkMethodHandleConstant_signature, "(Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;") \ 363 template(linkMethod_name, "linkMethod") \ 364 template(linkMethod_signature, "(Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;") \ 365 template(linkDynamicConstant_name, "linkDynamicConstant") \ 366 template(linkDynamicConstant_signature, "(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;") \ 367 template(linkCallSite_name, "linkCallSite") \ 368 template(linkCallSite_signature, "(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/invoke/MemberName;") \ 369 template(setTargetNormal_name, "setTargetNormal") \ 370 template(setTargetVolatile_name, "setTargetVolatile") \ 371 template(setTarget_signature, "(Ljava/lang/invoke/MethodHandle;)V") \ 372 template(DEFAULT_CONTEXT_name, "DEFAULT_CONTEXT") \ 373 NOT_LP64( do_alias(intptr_signature, int_signature) ) \ 374 LP64_ONLY( do_alias(intptr_signature, long_signature) ) \ 375 /* Foreign API Support */ \ 376 template(jdk_internal_foreign_abi_NativeEntryPoint, "jdk/internal/foreign/abi/NativeEntryPoint") \ 377 template(jdk_internal_foreign_abi_ABIDescriptor, "jdk/internal/foreign/abi/ABIDescriptor") \ 378 template(jdk_internal_foreign_abi_VMStorage, "jdk/internal/foreign/abi/VMStorage") \ 379 template(jdk_internal_foreign_abi_VMStorage_signature, "Ljdk/internal/foreign/abi/VMStorage;") \ 380 template(jdk_internal_foreign_abi_VMStorage_array_signature, "[Ljdk/internal/foreign/abi/VMStorage;") \ 381 template(jdk_internal_foreign_abi_VMStorage_array_array_signature, "[[Ljdk/internal/foreign/abi/VMStorage;") \ 382 template(jdk_internal_foreign_abi_CallConv, "jdk/internal/foreign/abi/UpcallLinker$CallRegs") \ 383 \ 384 /* Support for JVMCI */ \ 385 JVMCI_VM_SYMBOLS_DO(template, do_alias) \ 386 \ 387 template(java_lang_ClassFrameInfo, "java/lang/ClassFrameInfo") \ 388 template(java_lang_StackWalker, "java/lang/StackWalker") \ 389 template(java_lang_StackFrameInfo, "java/lang/StackFrameInfo") \ 390 template(java_lang_LiveStackFrameInfo, "java/lang/LiveStackFrameInfo") \ 391 template(java_lang_StackStreamFactory_AbstractStackWalker, "java/lang/StackStreamFactory$AbstractStackWalker") \ 392 template(doStackWalk_signature, "(JIIII)Ljava/lang/Object;") \ 393 template(asPrimitive_name, "asPrimitive") \ 394 template(asPrimitive_int_signature, "(I)Ljava/lang/LiveStackFrame$PrimitiveSlot;") \ 395 template(asPrimitive_long_signature, "(J)Ljava/lang/LiveStackFrame$PrimitiveSlot;") \ 396 \ 397 /* common method and field names */ \ 398 template(object_initializer_name, "<init>") \ 399 template(class_initializer_name, "<clinit>") \ 400 template(println_name, "println") \ 401 template(printStackTrace_name, "printStackTrace") \ 402 template(getStackTrace_name, "getStackTrace") \ 403 template(main_name, "main") \ 404 template(name_name, "name") \ 405 template(priority_name, "priority") \ 406 template(group_name, "group") \ 407 template(daemon_name, "daemon") \ 408 template(run_method_name, "run") \ 409 template(runWith_method_name, "runWith") \ 410 template(interrupt_method_name, "interrupt") \ 411 template(exit_method_name, "exit") \ 412 template(remove_method_name, "remove") \ 413 template(parent_name, "parent") \ 414 template(maxPriority_name, "maxPriority") \ 415 template(shutdown_name, "shutdown") \ 416 template(finalize_method_name, "finalize") \ 417 template(reference_lock_name, "lock") \ 418 template(reference_discovered_name, "discovered") \ 419 template(run_finalization_name, "runFinalization") \ 420 template(dispatchUncaughtException_name, "dispatchUncaughtException") \ 421 template(loadClass_name, "loadClass") \ 422 template(notifyJvmtiStart_name, "notifyJvmtiStart") \ 423 template(notifyJvmtiEnd_name, "notifyJvmtiEnd") \ 424 template(notifyJvmtiMount_name, "notifyJvmtiMount") \ 425 template(notifyJvmtiUnmount_name, "notifyJvmtiUnmount") \ 426 template(notifyJvmtiHideFrames_name, "notifyJvmtiHideFrames") \ 427 template(doYield_name, "doYield") \ 428 template(enter_name, "enter") \ 429 template(enterSpecial_name, "enterSpecial") \ 430 template(onContinue_name, "onContinue0") \ 431 template(getStacks_name, "getStacks") \ 432 template(onPinned_name, "onPinned0") \ 433 template(scope_name, "scope") \ 434 template(yieldInfo_name, "yieldInfo") \ 435 template(tail_name, "tail") \ 436 template(size_name, "size") \ 437 template(argsize_name, "argsize") \ 438 template(mode_name, "mode") \ 439 template(numFrames_name, "numFrames") \ 440 template(numOops_name, "numOops") \ 441 template(stack_name, "stack") \ 442 template(maxSize_name, "maxSize") \ 443 template(reset_name, "reset") \ 444 template(done_name, "done") \ 445 template(mounted_name, "mounted") \ 446 template(numInterpretedFrames_name, "numInterpretedFrames") \ 447 template(jfrTraceId_name, "jfrTraceId") \ 448 template(fp_name, "fp") \ 449 template(sp_name, "sp") \ 450 template(pc_name, "pc") \ 451 template(cs_name, "cs") \ 452 template(refStack_name, "refStack") \ 453 template(refSP_name, "refSP") \ 454 template(get_name, "get") \ 455 template(refersTo0_name, "refersTo0") \ 456 template(put_name, "put") \ 457 template(type_name, "type") \ 458 template(findNative_name, "findNative") \ 459 template(deadChild_name, "deadChild") \ 460 template(getFromClass_name, "getFromClass") \ 461 template(dispatch_name, "dispatch") \ 462 template(bootLoader_name, "bootLoader") \ 463 template(getPlatformClassLoader_name, "getPlatformClassLoader") \ 464 template(getSystemClassLoader_name, "getSystemClassLoader") \ 465 template(fillInStackTrace_name, "fillInStackTrace") \ 466 template(getCause_name, "getCause") \ 467 template(initCause_name, "initCause") \ 468 template(getProperty_name, "getProperty") \ 469 template(context_name, "context") \ 470 template(contextClassLoader_name, "contextClassLoader") \ 471 template(inheritedAccessControlContext_name, "inheritedAccessControlContext") \ 472 template(getClassContext_name, "getClassContext") \ 473 template(wait_name, "wait0") \ 474 template(checkPackageAccess_name, "checkPackageAccess") \ 475 template(newInstance0_name, "newInstance0") \ 476 template(forName_name, "forName") \ 477 template(forName0_name, "forName0") \ 478 template(isJavaIdentifierStart_name, "isJavaIdentifierStart") \ 479 template(isJavaIdentifierPart_name, "isJavaIdentifierPart") \ 480 template(cache_field_name, "cache") \ 481 template(value_name, "value") \ 482 template(compact_strings_name, "COMPACT_STRINGS") \ 483 template(numberOfLeadingZeros_name, "numberOfLeadingZeros") \ 484 template(numberOfTrailingZeros_name, "numberOfTrailingZeros") \ 485 template(bitCount_name, "bitCount") \ 486 template(profile_name, "profile") \ 487 template(equals_name, "equals") \ 488 template(length_name, "length") \ 489 template(target_name, "target") \ 490 template(toString_name, "toString") \ 491 template(values_name, "values") \ 492 template(receiver_name, "receiver") \ 493 template(vmtarget_name, "vmtarget") \ 494 template(vmholder_name, "vmholder") \ 495 template(method_name, "method") \ 496 template(vmindex_name, "vmindex") \ 497 template(vmcount_name, "vmcount") \ 498 template(flags_name, "flags") \ 499 template(basicType_name, "basicType") \ 500 template(append_name, "append") \ 501 template(klass_name, "klass") \ 502 template(array_klass_name, "array_klass") \ 503 template(mid_name, "mid") \ 504 template(cpref_name, "cpref") \ 505 template(version_name, "version") \ 506 template(methodName_name, "methodName") \ 507 template(fileName_name, "fileName") \ 508 template(lineNumber_name, "lineNumber") \ 509 template(oop_size_name, "oop_size") \ 510 template(static_oop_field_count_name, "static_oop_field_count") \ 511 template(protection_domain_name, "protection_domain") \ 512 template(signers_name, "signers_name") \ 513 template(source_file_name, "source_file") \ 514 template(loader_data_name, "loader_data") \ 515 template(cont_name, "cont") \ 516 template(vmdependencies_name, "vmdependencies") \ 517 template(last_cleanup_name, "last_cleanup") \ 518 template(loader_name, "loader") \ 519 template(getModule_name, "getModule") \ 520 template(input_stream_void_signature, "(Ljava/io/InputStream;)V") \ 521 template(input_stream_signature, "Ljava/io/InputStream;") \ 522 template(print_stream_signature, "Ljava/io/PrintStream;") \ 523 template(security_manager_signature, "Ljava/lang/SecurityManager;") \ 524 template(defineOrCheckPackage_name, "defineOrCheckPackage") \ 525 template(defineOrCheckPackage_signature, "(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)Ljava/lang/Package;") \ 526 template(getProtectionDomain_name, "getProtectionDomain") \ 527 template(getProtectionDomain_signature, "(Ljava/security/CodeSource;)Ljava/security/ProtectionDomain;") \ 528 template(java_lang_Integer_array_signature, "[Ljava/lang/Integer;") \ 529 template(java_lang_Long_array_signature, "[Ljava/lang/Long;") \ 530 template(java_lang_Character_array_signature, "[Ljava/lang/Character;") \ 531 template(java_lang_Short_array_signature, "[Ljava/lang/Short;") \ 532 template(java_lang_Byte_array_signature, "[Ljava/lang/Byte;") \ 533 template(java_lang_Boolean_signature, "Ljava/lang/Boolean;") \ 534 template(url_code_signer_array_void_signature, "(Ljava/net/URL;[Ljava/security/CodeSigner;)V") \ 535 template(jvmti_thread_state_name, "jvmti_thread_state") \ 536 template(jvmti_VTMS_transition_disable_count_name, "jvmti_VTMS_transition_disable_count") \ 537 template(jvmti_is_in_VTMS_transition_name, "jvmti_is_in_VTMS_transition") \ 538 template(module_entry_name, "module_entry") \ 539 template(resolved_references_name, "<resolved_references>") \ 540 template(init_lock_name, "<init_lock>") \ 541 template(default_value_name, ".default") \ 542 template(empty_marker_name, ".empty") \ 543 template(address_size_name, "ADDRESS_SIZE0") \ 544 template(page_size_name, "PAGE_SIZE") \ 545 template(big_endian_name, "BIG_ENDIAN") \ 546 template(use_unaligned_access_name, "UNALIGNED_ACCESS") \ 547 template(data_cache_line_flush_size_name, "DATA_CACHE_LINE_FLUSH_SIZE") \ 548 template(during_unsafe_access_name, "during_unsafe_access") \ 549 template(checkIndex_name, "checkIndex") \ 550 template(jfr_epoch_name, "jfr_epoch") \ 551 template(maxThawingSize_name, "maxThawingSize") \ 552 \ 553 /* name symbols needed by intrinsics */ \ 554 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, template, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) \ 555 \ 556 /* common signatures names */ \ 557 template(void_method_signature, "()V") \ 558 template(void_boolean_signature, "()Z") \ 559 template(void_byte_signature, "()B") \ 560 template(void_char_signature, "()C") \ 561 template(void_short_signature, "()S") \ 562 template(void_int_signature, "()I") \ 563 template(void_long_signature, "()J") \ 564 template(void_float_signature, "()F") \ 565 template(void_double_signature, "()D") \ 566 template(bool_void_signature, "(Z)V") \ 567 template(bool_bool_void_signature, "(ZZ)V") \ 568 template(int_void_signature, "(I)V") \ 569 template(int_int_signature, "(I)I") \ 570 template(char_char_signature, "(C)C") \ 571 template(short_short_signature, "(S)S") \ 572 template(int_bool_signature, "(I)Z") \ 573 template(float_bool_signature, "(F)Z") \ 574 template(double_bool_signature, "(D)Z") \ 575 template(float_int_signature, "(F)I") \ 576 template(double_long_signature, "(D)J") \ 577 template(double_double_signature, "(D)D") \ 578 template(float_float_signature, "(F)F") \ 579 template(int_float_signature, "(I)F") \ 580 template(long_int_signature, "(J)I") \ 581 template(long_long_signature, "(J)J") \ 582 template(long_double_signature, "(J)D") \ 583 template(long_void_signature, "(J)V") \ 584 template(byte_signature, "B") \ 585 template(char_signature, "C") \ 586 template(double_signature, "D") \ 587 template(float_signature, "F") \ 588 template(int_signature, "I") \ 589 template(long_signature, "J") \ 590 template(short_signature, "S") \ 591 template(bool_signature, "Z") \ 592 template(void_signature, "V") \ 593 template(bool_array_signature, "[Z") \ 594 template(byte_array_signature, "[B") \ 595 template(char_array_signature, "[C") \ 596 template(int_array_signature, "[I") \ 597 template(long_array_signature, "[J") \ 598 template(runnable_signature, "Ljava/lang/Runnable;") \ 599 template(continuation_signature, "Ljdk/internal/vm/Continuation;") \ 600 template(continuationscope_signature, "Ljdk/internal/vm/ContinuationScope;") \ 601 template(stackchunk_signature, "Ljdk/internal/vm/StackChunk;") \ 602 template(vthread_signature, "Ljava/lang/VirtualThread;") \ 603 template(object_void_signature, "(Ljava/lang/Object;)V") \ 604 template(object_int_signature, "(Ljava/lang/Object;)I") \ 605 template(long_object_long_signature, "(JLjava/lang/Object;)J") \ 606 template(object_boolean_signature, "(Ljava/lang/Object;)Z") \ 607 template(object_object_signature, "(Ljava/lang/Object;)Ljava/lang/Object;") \ 608 template(string_void_signature, "(Ljava/lang/String;)V") \ 609 template(string_int_signature, "(Ljava/lang/String;)I") \ 610 template(string_byte_array_signature, "(Ljava/lang/String;)[B") \ 611 template(string_bool_byte_array_signature, "(Ljava/lang/String;Z)[B") \ 612 template(throwable_signature, "Ljava/lang/Throwable;") \ 613 template(throwable_void_signature, "(Ljava/lang/Throwable;)V") \ 614 template(void_throwable_signature, "()Ljava/lang/Throwable;") \ 615 template(class_void_signature, "(Ljava/lang/Class;)V") \ 616 template(class_int_signature, "(Ljava/lang/Class;)I") \ 617 template(class_long_signature, "(Ljava/lang/Class;)J") \ 618 template(class_boolean_signature, "(Ljava/lang/Class;)Z") \ 619 template(class_class_signature, "(Ljava/lang/Class;)Ljava/lang/Class;") \ 620 template(throwable_throwable_signature, "(Ljava/lang/Throwable;)Ljava/lang/Throwable;") \ 621 template(throwable_string_void_signature, "(Ljava/lang/Throwable;Ljava/lang/String;)V") \ 622 template(string_array_void_signature, "([Ljava/lang/String;)V") \ 623 template(string_array_string_array_void_signature, "([Ljava/lang/String;[Ljava/lang/String;)V") \ 624 template(thread_throwable_void_signature, "(Ljava/lang/Thread;Ljava/lang/Throwable;)V") \ 625 template(thread_void_signature, "(Ljava/lang/Thread;)V") \ 626 template(runnable_void_signature, "(Ljava/lang/Runnable;)V") \ 627 template(threadgroup_runnable_void_signature, "(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V") \ 628 template(threadgroup_string_void_signature, "(Ljava/lang/ThreadGroup;Ljava/lang/String;)V") \ 629 template(void_threadgroup_array_signature, "()[Ljava/lang/ThreadGroup;") \ 630 template(string_class_signature, "(Ljava/lang/String;)Ljava/lang/Class;") \ 631 template(string_boolean_class_signature, "(Ljava/lang/String;Z)Ljava/lang/Class;") \ 632 template(object_object_object_signature, "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;") \ 633 template(object_object_boolean_signature, "(Ljava/lang/Object;Ljava/lang/Object;)Z") \ 634 template(string_string_string_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;") \ 635 template(string_string_signature, "(Ljava/lang/String;)Ljava/lang/String;") \ 636 template(classloader_string_long_signature, "(Ljava/lang/ClassLoader;Ljava/lang/String;)J") \ 637 template(byte_array_void_signature, "([B)V") \ 638 template(char_array_void_signature, "([C)V") \ 639 template(int_int_void_signature, "(II)V") \ 640 template(long_long_void_signature, "(JJ)V") \ 641 template(void_byte_array_signature, "()[B") \ 642 template(void_classloader_signature, "()Ljava/lang/ClassLoader;") \ 643 template(void_BuiltinClassLoader_signature, "()Ljdk/internal/loader/BuiltinClassLoader;") \ 644 template(void_object_signature, "()Ljava/lang/Object;") \ 645 template(void_class_signature, "()Ljava/lang/Class;") \ 646 template(void_class_array_signature, "()[Ljava/lang/Class;") \ 647 template(void_string_signature, "()Ljava/lang/String;") \ 648 template(void_module_signature, "()Ljava/lang/Module;") \ 649 template(object_array_object_signature, "([Ljava/lang/Object;)Ljava/lang/Object;") \ 650 template(object_object_array_object_signature, "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;")\ 651 template(exception_void_signature, "(Ljava/lang/Exception;)V") \ 652 template(protectiondomain_signature, "[Ljava/security/ProtectionDomain;") \ 653 template(accesscontrolcontext_signature, "Ljava/security/AccessControlContext;") \ 654 template(class_protectiondomain_signature, "(Ljava/lang/Class;Ljava/security/ProtectionDomain;)V") \ 655 template(thread_signature, "Ljava/lang/Thread;") \ 656 template(thread_fieldholder_signature, "Ljava/lang/Thread$FieldHolder;") \ 657 template(thread_array_signature, "[Ljava/lang/Thread;") \ 658 template(threadgroup_signature, "Ljava/lang/ThreadGroup;") \ 659 template(threadgroup_array_signature, "[Ljava/lang/ThreadGroup;") \ 660 template(class_array_signature, "[Ljava/lang/Class;") \ 661 template(classloader_signature, "Ljava/lang/ClassLoader;") \ 662 template(object_signature, "Ljava/lang/Object;") \ 663 template(object_array_signature, "[Ljava/lang/Object;") \ 664 template(class_signature, "Ljava/lang/Class;") \ 665 template(string_signature, "Ljava/lang/String;") \ 666 template(string_array_signature, "[Ljava/lang/String;") \ 667 template(reference_signature, "Ljava/lang/ref/Reference;") \ 668 template(referencequeue_signature, "Ljava/lang/ref/ReferenceQueue;") \ 669 template(weakreference_array_signature, "[Ljava/lang/ref/WeakReference;") \ 670 template(executable_signature, "Ljava/lang/reflect/Executable;") \ 671 template(module_signature, "Ljava/lang/Module;") \ 672 template(concurrenthashmap_signature, "Ljava/util/concurrent/ConcurrentHashMap;") \ 673 template(String_StringBuilder_signature, "(Ljava/lang/String;)Ljava/lang/StringBuilder;") \ 674 template(int_StringBuilder_signature, "(I)Ljava/lang/StringBuilder;") \ 675 template(char_StringBuilder_signature, "(C)Ljava/lang/StringBuilder;") \ 676 template(String_StringBuffer_signature, "(Ljava/lang/String;)Ljava/lang/StringBuffer;") \ 677 template(int_StringBuffer_signature, "(I)Ljava/lang/StringBuffer;") \ 678 template(char_StringBuffer_signature, "(C)Ljava/lang/StringBuffer;") \ 679 template(int_String_signature, "(I)Ljava/lang/String;") \ 680 template(boolean_boolean_int_signature, "(ZZ)I") \ 681 template(big_integer_shift_worker_signature, "([I[IIII)V") \ 682 template(reflect_method_signature, "Ljava/lang/reflect/Method;") \ 683 template(getStackTrace_signature, "()[Ljava/lang/StackTraceElement;") \ 684 \ 685 /* signature symbols needed by intrinsics */ \ 686 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, template, VM_ALIAS_IGNORE) \ 687 \ 688 /* symbol aliases needed by intrinsics */ \ 689 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, do_alias) \ 690 \ 691 /* returned by the C1 compiler in case there's not enough memory to allocate a new symbol*/ \ 692 template(dummy_symbol, "illegal symbol") \ 693 \ 694 /* used by ClassFormatError when class name is not known yet */ \ 695 template(unknown_class_name, "<Unknown>") \ 696 \ 697 /* JVM monitoring and management support */ \ 698 template(java_lang_StackTraceElement_array, "[Ljava/lang/StackTraceElement;") \ 699 template(java_lang_management_ThreadState, "java/lang/management/ThreadState") \ 700 template(java_lang_management_MemoryUsage, "java/lang/management/MemoryUsage") \ 701 template(java_lang_management_ThreadInfo, "java/lang/management/ThreadInfo") \ 702 template(jdk_internal_agent_Agent, "jdk/internal/agent/Agent") \ 703 template(sun_management_Sensor, "sun/management/Sensor") \ 704 template(sun_management_ManagementFactoryHelper, "sun/management/ManagementFactoryHelper") \ 705 template(com_sun_management_internal_DiagnosticCommandImpl, "com/sun/management/internal/DiagnosticCommandImpl") \ 706 template(com_sun_management_internal_GarbageCollectorExtImpl,"com/sun/management/internal/GarbageCollectorExtImpl") \ 707 template(getDiagnosticCommandMBean_name, "getDiagnosticCommandMBean") \ 708 template(getDiagnosticCommandMBean_signature, "()Lcom/sun/management/DiagnosticCommandMBean;") \ 709 template(getGcInfoBuilder_name, "getGcInfoBuilder") \ 710 template(getGcInfoBuilder_signature, "()Lcom/sun/management/internal/GcInfoBuilder;") \ 711 template(com_sun_management_GcInfo, "com/sun/management/GcInfo") \ 712 template(com_sun_management_GcInfo_constructor_signature, "(Lcom/sun/management/internal/GcInfoBuilder;JJJ[Ljava/lang/management/MemoryUsage;[Ljava/lang/management/MemoryUsage;[Ljava/lang/Object;)V") \ 713 template(createGCNotification_name, "createGCNotification") \ 714 template(createGCNotification_signature, "(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/sun/management/GcInfo;)V") \ 715 template(createDiagnosticFrameworkNotification_name, "createDiagnosticFrameworkNotification") \ 716 template(trigger_name, "trigger") \ 717 template(clear_name, "clear") \ 718 template(trigger_method_signature, "(ILjava/lang/management/MemoryUsage;)V") \ 719 template(startAgent_name, "startAgent") \ 720 template(startRemoteAgent_name, "startRemoteManagementAgent") \ 721 template(startLocalAgent_name, "startLocalManagementAgent") \ 722 template(stopRemoteAgent_name, "stopRemoteManagementAgent") \ 723 template(getAgentStatus_name, "getManagementAgentStatus") \ 724 template(java_lang_management_ThreadInfo_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;)V") \ 725 template(java_lang_management_ThreadInfo_with_locks_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;[Ljava/lang/Object;[I[Ljava/lang/Object;)V") \ 726 template(long_long_long_long_void_signature, "(JJJJ)V") \ 727 template(finalizer_histogram_klass, "java/lang/ref/FinalizerHistogram") \ 728 template(void_finalizer_histogram_entry_array_signature, "()[Ljava/lang/ref/FinalizerHistogram$Entry;") \ 729 template(get_finalizer_histogram_name, "getFinalizerHistogram") \ 730 template(finalizer_histogram_entry_name_field, "className") \ 731 template(finalizer_histogram_entry_count_field, "instanceCount") \ 732 \ 733 template(java_lang_management_MemoryPoolMXBean, "java/lang/management/MemoryPoolMXBean") \ 734 template(java_lang_management_MemoryManagerMXBean, "java/lang/management/MemoryManagerMXBean") \ 735 template(java_lang_management_GarbageCollectorMXBean,"java/lang/management/GarbageCollectorMXBean") \ 736 template(gcInfoBuilder_name, "gcInfoBuilder") \ 737 template(createMemoryPool_name, "createMemoryPool") \ 738 template(createMemoryManager_name, "createMemoryManager") \ 739 template(createGarbageCollector_name, "createGarbageCollector") \ 740 template(createMemoryPool_signature, "(Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMXBean;") \ 741 template(createMemoryManager_signature, "(Ljava/lang/String;)Ljava/lang/management/MemoryManagerMXBean;") \ 742 template(createGarbageCollector_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMXBean;") \ 743 template(addThreadDumpForMonitors_name, "addThreadDumpForMonitors") \ 744 template(addThreadDumpForSynchronizers_name, "addThreadDumpForSynchronizers") \ 745 template(addThreadDumpForMonitors_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;[I)V") \ 746 template(addThreadDumpForSynchronizers_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;)V") \ 747 \ 748 /* JVMTI/java.lang.instrument support and VM Attach mechanism */ \ 749 template(jdk_internal_module_Modules, "jdk/internal/module/Modules") \ 750 template(jdk_internal_vm_VMSupport, "jdk/internal/vm/VMSupport") \ 751 template(addReads_name, "addReads") \ 752 template(addReads_signature, "(Ljava/lang/Module;Ljava/lang/Module;)V") \ 753 template(addExports_name, "addExports") \ 754 template(addOpens_name, "addOpens") \ 755 template(addExports_signature, "(Ljava/lang/Module;Ljava/lang/String;Ljava/lang/Module;)V") \ 756 template(addUses_name, "addUses") \ 757 template(addUses_signature, "(Ljava/lang/Module;Ljava/lang/Class;)V") \ 758 template(addProvides_name, "addProvides") \ 759 template(addProvides_signature, "(Ljava/lang/Module;Ljava/lang/Class;Ljava/lang/Class;)V") \ 760 template(loadModule_name, "loadModule") \ 761 template(loadModule_signature, "(Ljava/lang/String;)Ljava/lang/Module;") \ 762 template(transformedByAgent_name, "transformedByAgent") \ 763 template(transformedByAgent_signature, "(Ljava/lang/Module;)V") \ 764 template(appendToClassPathForInstrumentation_name, "appendToClassPathForInstrumentation") \ 765 do_alias(appendToClassPathForInstrumentation_signature, string_void_signature) \ 766 template(serializePropertiesToByteArray_name, "serializePropertiesToByteArray") \ 767 template(serializeAgentPropertiesToByteArray_name, "serializeAgentPropertiesToByteArray") \ 768 template(encodeThrowable_name, "encodeThrowable") \ 769 template(encodeThrowable_signature, "(Ljava/lang/Throwable;JI)I") \ 770 template(decodeAndThrowThrowable_name, "decodeAndThrowThrowable") \ 771 template(encodeAnnotations_name, "encodeAnnotations") \ 772 template(encodeAnnotations_signature, "([BLjava/lang/Class;Ljdk/internal/reflect/ConstantPool;Z[Ljava/lang/Class;)[B")\ 773 template(decodeAndThrowThrowable_signature, "(IJZ)V") \ 774 template(classRedefinedCount_name, "classRedefinedCount") \ 775 template(classLoader_name, "classLoader") \ 776 template(componentType_name, "componentType") \ 777 template(primaryType_name, "primaryType") \ 778 template(secondaryType_name, "secondaryType") \ 779 \ 780 /* forEachRemaining support */ \ 781 template(java_util_stream_StreamsRangeIntSpliterator, "java/util/stream/Streams$RangeIntSpliterator") \ 782 \ 783 /* jfr signatures */ \ 784 JFR_TEMPLATES(template) \ 785 \ 786 /* CDS */ \ 787 template(dumpSharedArchive, "dumpSharedArchive") \ 788 template(dumpSharedArchive_signature, "(ZLjava/lang/String;)Ljava/lang/String;") \ 789 template(generateLambdaFormHolderClasses, "generateLambdaFormHolderClasses") \ 790 template(generateLambdaFormHolderClasses_signature, "([Ljava/lang/String;)[Ljava/lang/Object;") \ 791 template(java_lang_Enum, "java/lang/Enum") \ 792 template(java_lang_invoke_Invokers_Holder, "java/lang/invoke/Invokers$Holder") \ 793 template(java_lang_invoke_DirectMethodHandle_Holder, "java/lang/invoke/DirectMethodHandle$Holder") \ 794 template(java_lang_invoke_LambdaForm_Holder, "java/lang/invoke/LambdaForm$Holder") \ 795 template(java_lang_invoke_DelegatingMethodHandle_Holder, "java/lang/invoke/DelegatingMethodHandle$Holder") \ 796 template(jdk_internal_loader_ClassLoaders, "jdk/internal/loader/ClassLoaders") \ 797 template(jdk_internal_misc_CDS, "jdk/internal/misc/CDS") \ 798 template(java_util_concurrent_ConcurrentHashMap, "java/util/concurrent/ConcurrentHashMap") \ 799 template(java_util_ArrayList, "java/util/ArrayList") \ 800 template(toFileURL_name, "toFileURL") \ 801 template(toFileURL_signature, "(Ljava/lang/String;)Ljava/net/URL;") \ 802 template(url_void_signature, "(Ljava/net/URL;)V") \ 803 template(url_array_classloader_void_signature, "([Ljava/net/URL;Ljava/lang/ClassLoader;)V") \ 804 \ 805 template(java_lang_runtime_ValueObjectMethods, "java/lang/runtime/ValueObjectMethods") \ 806 template(isSubstitutable_name, "isSubstitutable") \ 807 template(valueObjectHashCode_name, "valueObjectHashCode") \ 808 template(jdk_internal_value_PrimitiveClass, "jdk/internal/value/PrimitiveClass") \ 809 template(jdk_internal_value_ValueClass, "jdk/internal/value/ValueClass") \ 810 \ 811 /* Thread.dump_to_file jcmd */ \ 812 template(jdk_internal_vm_ThreadDumper, "jdk/internal/vm/ThreadDumper") \ 813 template(dumpThreads_name, "dumpThreads") \ 814 template(dumpThreadsToJson_name, "dumpThreadsToJson") \ 815 816 /*end*/ 817 818 // enum for figuring positions and size of Symbol::_vm_symbols[] 819 enum class vmSymbolID : int { 820 // [FIRST_SID ... LAST_SID] is the iteration range for the *valid* symbols. 821 // NO_SID is used to indicate an invalid symbol. Some implementation code 822 // *may* read _vm_symbols[NO_SID], so it must be a valid array index. 823 NO_SID = 0, // exclusive lower limit 824 825 #define VM_SYMBOL_ENUM(name, string) VM_SYMBOL_ENUM_NAME_(name), 826 VM_SYMBOLS_DO(VM_SYMBOL_ENUM, VM_ALIAS_IGNORE) 827 #undef VM_SYMBOL_ENUM 828 829 SID_LIMIT, // exclusive upper limit 830 831 #define VM_ALIAS_ENUM(name, def) VM_SYMBOL_ENUM_NAME_(name) = VM_SYMBOL_ENUM_NAME_(def), 832 VM_SYMBOLS_DO(VM_SYMBOL_IGNORE, VM_ALIAS_ENUM) 833 #undef VM_ALIAS_ENUM 834 835 FIRST_SID = NO_SID + 1, // inclusive lower limit 836 LAST_SID = SID_LIMIT - 1, // inclusive upper limit 837 }; 838 839 ENUMERATOR_RANGE(vmSymbolID, vmSymbolID::FIRST_SID, vmSymbolID::LAST_SID) 840 841 class vmSymbols: AllStatic { 842 friend class vmIntrinsics; 843 friend class VMStructs; 844 friend class JVMCIVMStructs; 845 846 static const int NO_SID = static_cast<int>(vmSymbolID::NO_SID); // exclusive lower limit 847 static const int FIRST_SID = static_cast<int>(vmSymbolID::FIRST_SID); // inclusive lower limit 848 static const int LAST_SID = static_cast<int>(vmSymbolID::FIRST_SID); // inclusive upper limit 849 static const int SID_LIMIT = static_cast<int>(vmSymbolID::SID_LIMIT); // exclusive upper limit 850 851 public: 852 static constexpr bool is_valid_id(int id) { 853 return (id >= FIRST_SID && id < SID_LIMIT); 854 } 855 static constexpr bool is_valid_id(vmSymbolID sid) { 856 return is_valid_id(static_cast<int>(sid)); 857 } 858 859 static constexpr vmSymbolID as_SID(int id) { 860 assert(is_valid_id(id), "must be"); 861 return static_cast<vmSymbolID>(id); 862 } 863 864 static constexpr int as_int(vmSymbolID sid) { 865 assert(is_valid_id(sid), "must be"); 866 return static_cast<int>(sid); 867 } 868 869 static constexpr int number_of_symbols() { 870 static_assert(NO_SID == 0, "must be a valid array index"); 871 static_assert(FIRST_SID == 1, "must not be the same as NO_SID"); 872 return SID_LIMIT; 873 } 874 875 enum { 876 log2_SID_LIMIT = 11 // checked by an assert at start-up 877 }; 878 879 private: 880 881 // Field signatures indexed by BasicType. 882 static Symbol* _type_signatures[T_VOID+1]; 883 884 public: 885 // Initialization 886 static void initialize(); 887 // Accessing 888 #define VM_SYMBOL_DECLARE(name, ignore) \ 889 static Symbol* name() { \ 890 return Symbol::_vm_symbols[static_cast<int>(VM_SYMBOL_ENUM_NAME(name))]; \ 891 } 892 VM_SYMBOLS_DO(VM_SYMBOL_DECLARE, VM_SYMBOL_DECLARE) 893 #undef VM_SYMBOL_DECLARE 894 895 // Sharing support 896 static void symbols_do(SymbolClosure* f); 897 static void metaspace_pointers_do(MetaspaceClosure *it); 898 static void serialize(SerializeClosure* soc); 899 900 static Symbol* type_signature(BasicType t) { 901 assert((uint)t < T_VOID+1, "range check"); 902 assert(_type_signatures[t] != nullptr, "domain check"); 903 return _type_signatures[t]; 904 } 905 906 static Symbol* symbol_at(vmSymbolID id) { 907 return Symbol::vm_symbol_at(id); 908 } 909 910 // Returns symbol's vmSymbolID if one is assigned, else vmSymbolID::NO_SID. 911 static vmSymbolID find_sid(const Symbol* symbol); 912 static vmSymbolID find_sid(const char* symbol_name); 913 914 #ifndef PRODUCT 915 // No need for this in the product: 916 static const char* name_for(vmSymbolID sid); 917 #endif //PRODUCT 918 }; 919 920 #endif // SHARE_CLASSFILE_VMSYMBOLS_HPP