Mercurial > hg > truffle
annotate src/share/vm/classfile/vmSymbols.hpp @ 3762:5c0a3c1858b1
7048782: CMS: assert(last_chunk_index_to_check<= last_chunk_index) failed: parCardTableModRefBS.cpp:359
Summary: The LNC array is sized before the start of a scavenge, while the heap may expand during a scavenge. With CMS, the last block of an arbitrary suffice of the LNC array may expand due to coalition with the expansion delta. We now take care not to attempt access past the end of the LNC array. LNC array code will be cleaned up and suitably encapsulated as part of the forthcoming performance RFE 7043675.
Reviewed-by: brutisso
author | ysr |
---|---|
date | Thu, 02 Jun 2011 10:23:36 -0700 |
parents | 688202ef6306 |
children | ba550512d3b2 |
rev | line source |
---|---|
0 | 1 /* |
2129
8f8dfba37802
6994753: Implement optional hook to a Java method at VM startup.
kevinw
parents:
2011
diff
changeset
|
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. |
0 | 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 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1507
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1507
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1507
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
1972 | 25 #ifndef SHARE_VM_CLASSFILE_VMSYMBOLS_HPP |
26 #define SHARE_VM_CLASSFILE_VMSYMBOLS_HPP | |
27 | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
28 #include "oops/symbol.hpp" |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
29 #include "memory/iterator.hpp" |
1972 | 30 |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
31 // The class vmSymbols is a name space for fast lookup of |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
32 // symbols commonly used in the VM. |
0 | 33 // |
34 // Sample usage: | |
35 // | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
36 // Symbol* obj = vmSymbols::java_lang_Object(); |
0 | 37 |
38 | |
39 // Useful sub-macros exported by this header file: | |
40 | |
41 #define VM_SYMBOL_ENUM_NAME(name) name##_enum | |
42 #define VM_INTRINSIC_IGNORE(id, class, name, sig, flags) /*ignored*/ | |
43 #define VM_SYMBOL_IGNORE(id, name) /*ignored*/ | |
44 #define VM_ALIAS_IGNORE(id, id2) /*ignored*/ | |
45 | |
46 | |
47 // Mapping function names to values. New entries should be added below. | |
48 | |
49 #define VM_SYMBOLS_DO(template, do_alias) \ | |
50 /* commonly used class names */ \ | |
51 template(java_lang_System, "java/lang/System") \ | |
52 template(java_lang_Object, "java/lang/Object") \ | |
53 template(java_lang_Class, "java/lang/Class") \ | |
54 template(java_lang_String, "java/lang/String") \ | |
669
eca19a8425b5
6810653: Change String cache class used by Hotspot from String to StringValue
phh
parents:
647
diff
changeset
|
55 template(java_lang_StringValue, "java/lang/StringValue") \ |
675 | 56 template(java_lang_StringCache, "java/lang/StringValue$StringCache") \ |
0 | 57 template(java_lang_Thread, "java/lang/Thread") \ |
58 template(java_lang_ThreadGroup, "java/lang/ThreadGroup") \ | |
59 template(java_lang_Cloneable, "java/lang/Cloneable") \ | |
60 template(java_lang_Throwable, "java/lang/Throwable") \ | |
61 template(java_lang_ClassLoader, "java/lang/ClassLoader") \ | |
62 template(java_lang_ClassLoader_NativeLibrary, "java/lang/ClassLoader\x024NativeLibrary") \ | |
63 template(java_lang_ThreadDeath, "java/lang/ThreadDeath") \ | |
64 template(java_lang_Boolean, "java/lang/Boolean") \ | |
65 template(java_lang_Character, "java/lang/Character") \ | |
17
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
66 template(java_lang_Character_CharacterCache, "java/lang/Character$CharacterCache") \ |
0 | 67 template(java_lang_Float, "java/lang/Float") \ |
68 template(java_lang_Double, "java/lang/Double") \ | |
69 template(java_lang_Byte, "java/lang/Byte") \ | |
17
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
70 template(java_lang_Byte_Cache, "java/lang/Byte$ByteCache") \ |
0 | 71 template(java_lang_Short, "java/lang/Short") \ |
17
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
72 template(java_lang_Short_ShortCache, "java/lang/Short$ShortCache") \ |
0 | 73 template(java_lang_Integer, "java/lang/Integer") \ |
17
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
74 template(java_lang_Integer_IntegerCache, "java/lang/Integer$IntegerCache") \ |
0 | 75 template(java_lang_Long, "java/lang/Long") \ |
17
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
76 template(java_lang_Long_LongCache, "java/lang/Long$LongCache") \ |
0 | 77 template(java_lang_Shutdown, "java/lang/Shutdown") \ |
78 template(java_lang_ref_Reference, "java/lang/ref/Reference") \ | |
79 template(java_lang_ref_SoftReference, "java/lang/ref/SoftReference") \ | |
80 template(java_lang_ref_WeakReference, "java/lang/ref/WeakReference") \ | |
81 template(java_lang_ref_FinalReference, "java/lang/ref/FinalReference") \ | |
82 template(java_lang_ref_PhantomReference, "java/lang/ref/PhantomReference") \ | |
83 template(java_lang_ref_Finalizer, "java/lang/ref/Finalizer") \ | |
84 template(java_lang_reflect_AccessibleObject, "java/lang/reflect/AccessibleObject") \ | |
85 template(java_lang_reflect_Method, "java/lang/reflect/Method") \ | |
86 template(java_lang_reflect_Constructor, "java/lang/reflect/Constructor") \ | |
87 template(java_lang_reflect_Field, "java/lang/reflect/Field") \ | |
88 template(java_lang_reflect_Array, "java/lang/reflect/Array") \ | |
89 template(java_lang_StringBuffer, "java/lang/StringBuffer") \ | |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
90 template(java_lang_StringBuilder, "java/lang/StringBuilder") \ |
0 | 91 template(java_lang_CharSequence, "java/lang/CharSequence") \ |
92 template(java_security_AccessControlContext, "java/security/AccessControlContext") \ | |
93 template(java_security_ProtectionDomain, "java/security/ProtectionDomain") \ | |
94 template(java_io_OutputStream, "java/io/OutputStream") \ | |
95 template(java_io_Reader, "java/io/Reader") \ | |
96 template(java_io_BufferedReader, "java/io/BufferedReader") \ | |
97 template(java_io_FileInputStream, "java/io/FileInputStream") \ | |
98 template(java_io_ByteArrayInputStream, "java/io/ByteArrayInputStream") \ | |
99 template(java_io_Serializable, "java/io/Serializable") \ | |
100 template(java_util_Arrays, "java/util/Arrays") \ | |
101 template(java_util_Properties, "java/util/Properties") \ | |
102 template(java_util_Vector, "java/util/Vector") \ | |
103 template(java_util_AbstractList, "java/util/AbstractList") \ | |
104 template(java_util_Hashtable, "java/util/Hashtable") \ | |
18
c7d713375c94
6621621: HashMap front cache should be enabled only with AggressiveOpts
phh
parents:
17
diff
changeset
|
105 template(java_util_HashMap, "java/util/HashMap") \ |
0 | 106 template(java_lang_Compiler, "java/lang/Compiler") \ |
107 template(sun_misc_Signal, "sun/misc/Signal") \ | |
108 template(java_lang_AssertionStatusDirectives, "java/lang/AssertionStatusDirectives") \ | |
18
c7d713375c94
6621621: HashMap front cache should be enabled only with AggressiveOpts
phh
parents:
17
diff
changeset
|
109 template(sun_jkernel_DownloadManager, "sun/jkernel/DownloadManager") \ |
0 | 110 template(getBootClassPathEntryForClass_name, "getBootClassPathEntryForClass") \ |
2129
8f8dfba37802
6994753: Implement optional hook to a Java method at VM startup.
kevinw
parents:
2011
diff
changeset
|
111 template(sun_misc_PostVMInitHook, "sun/misc/PostVMInitHook") \ |
0 | 112 \ |
113 /* class file format tags */ \ | |
114 template(tag_source_file, "SourceFile") \ | |
115 template(tag_inner_classes, "InnerClasses") \ | |
116 template(tag_constant_value, "ConstantValue") \ | |
117 template(tag_code, "Code") \ | |
118 template(tag_exceptions, "Exceptions") \ | |
119 template(tag_line_number_table, "LineNumberTable") \ | |
120 template(tag_local_variable_table, "LocalVariableTable") \ | |
121 template(tag_local_variable_type_table, "LocalVariableTypeTable") \ | |
122 template(tag_stack_map_table, "StackMapTable") \ | |
123 template(tag_synthetic, "Synthetic") \ | |
124 template(tag_deprecated, "Deprecated") \ | |
125 template(tag_source_debug_extension, "SourceDebugExtension") \ | |
126 template(tag_signature, "Signature") \ | |
127 template(tag_runtime_visible_annotations, "RuntimeVisibleAnnotations") \ | |
128 template(tag_runtime_invisible_annotations, "RuntimeInvisibleAnnotations") \ | |
129 template(tag_runtime_visible_parameter_annotations, "RuntimeVisibleParameterAnnotations") \ | |
130 template(tag_runtime_invisible_parameter_annotations,"RuntimeInvisibleParameterAnnotations") \ | |
131 template(tag_annotation_default, "AnnotationDefault") \ | |
132 template(tag_enclosing_method, "EnclosingMethod") \ | |
2011
dad31fc330cd
7001379: bootstrap method data needs to be moved from constant pool to a classfile attribute
jrose
parents:
1972
diff
changeset
|
133 template(tag_bootstrap_methods, "BootstrapMethods") \ |
0 | 134 \ |
135 /* exception klasses: at least all exceptions thrown by the VM have entries here */ \ | |
136 template(java_lang_ArithmeticException, "java/lang/ArithmeticException") \ | |
137 template(java_lang_ArrayIndexOutOfBoundsException, "java/lang/ArrayIndexOutOfBoundsException") \ | |
138 template(java_lang_ArrayStoreException, "java/lang/ArrayStoreException") \ | |
139 template(java_lang_ClassCastException, "java/lang/ClassCastException") \ | |
140 template(java_lang_ClassNotFoundException, "java/lang/ClassNotFoundException") \ | |
141 template(java_lang_CloneNotSupportedException, "java/lang/CloneNotSupportedException") \ | |
142 template(java_lang_IllegalAccessException, "java/lang/IllegalAccessException") \ | |
143 template(java_lang_IllegalArgumentException, "java/lang/IllegalArgumentException") \ | |
1507
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
144 template(java_lang_IllegalStateException, "java/lang/IllegalStateException") \ |
0 | 145 template(java_lang_IllegalMonitorStateException, "java/lang/IllegalMonitorStateException") \ |
146 template(java_lang_IllegalThreadStateException, "java/lang/IllegalThreadStateException") \ | |
147 template(java_lang_IndexOutOfBoundsException, "java/lang/IndexOutOfBoundsException") \ | |
148 template(java_lang_InstantiationException, "java/lang/InstantiationException") \ | |
149 template(java_lang_InstantiationError, "java/lang/InstantiationError") \ | |
150 template(java_lang_InterruptedException, "java/lang/InterruptedException") \ | |
151 template(java_lang_LinkageError, "java/lang/LinkageError") \ | |
152 template(java_lang_NegativeArraySizeException, "java/lang/NegativeArraySizeException") \ | |
153 template(java_lang_NoSuchFieldException, "java/lang/NoSuchFieldException") \ | |
154 template(java_lang_NoSuchMethodException, "java/lang/NoSuchMethodException") \ | |
155 template(java_lang_NullPointerException, "java/lang/NullPointerException") \ | |
156 template(java_lang_StringIndexOutOfBoundsException, "java/lang/StringIndexOutOfBoundsException")\ | |
157 template(java_lang_InvalidClassException, "java/lang/InvalidClassException") \ | |
158 template(java_lang_reflect_InvocationTargetException, "java/lang/reflect/InvocationTargetException") \ | |
159 template(java_lang_Exception, "java/lang/Exception") \ | |
160 template(java_lang_RuntimeException, "java/lang/RuntimeException") \ | |
161 template(java_io_IOException, "java/io/IOException") \ | |
162 template(java_security_PrivilegedActionException, "java/security/PrivilegedActionException") \ | |
163 \ | |
164 /* error klasses: at least all errors thrown by the VM have entries here */ \ | |
165 template(java_lang_AbstractMethodError, "java/lang/AbstractMethodError") \ | |
166 template(java_lang_ClassCircularityError, "java/lang/ClassCircularityError") \ | |
167 template(java_lang_ClassFormatError, "java/lang/ClassFormatError") \ | |
168 template(java_lang_UnsupportedClassVersionError, "java/lang/UnsupportedClassVersionError") \ | |
169 template(java_lang_Error, "java/lang/Error") \ | |
170 template(java_lang_ExceptionInInitializerError, "java/lang/ExceptionInInitializerError") \ | |
171 template(java_lang_IllegalAccessError, "java/lang/IllegalAccessError") \ | |
172 template(java_lang_IncompatibleClassChangeError, "java/lang/IncompatibleClassChangeError") \ | |
173 template(java_lang_InternalError, "java/lang/InternalError") \ | |
174 template(java_lang_NoClassDefFoundError, "java/lang/NoClassDefFoundError") \ | |
175 template(java_lang_NoSuchFieldError, "java/lang/NoSuchFieldError") \ | |
176 template(java_lang_NoSuchMethodError, "java/lang/NoSuchMethodError") \ | |
177 template(java_lang_OutOfMemoryError, "java/lang/OutOfMemoryError") \ | |
178 template(java_lang_UnsatisfiedLinkError, "java/lang/UnsatisfiedLinkError") \ | |
179 template(java_lang_VerifyError, "java/lang/VerifyError") \ | |
180 template(java_lang_SecurityException, "java/lang/SecurityException") \ | |
181 template(java_lang_VirtualMachineError, "java/lang/VirtualMachineError") \ | |
182 template(java_lang_StackOverflowError, "java/lang/StackOverflowError") \ | |
183 template(java_lang_StackTraceElement, "java/lang/StackTraceElement") \ | |
184 template(java_util_concurrent_locks_AbstractOwnableSynchronizer, "java/util/concurrent/locks/AbstractOwnableSynchronizer") \ | |
185 \ | |
186 /* class symbols needed by intrinsics */ \ | |
187 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, template, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) \ | |
188 \ | |
189 /* Support for reflection based on dynamic bytecode generation (JDK 1.4 and above) */ \ | |
190 \ | |
191 template(sun_reflect_FieldInfo, "sun/reflect/FieldInfo") \ | |
192 template(sun_reflect_MethodInfo, "sun/reflect/MethodInfo") \ | |
193 template(sun_reflect_MagicAccessorImpl, "sun/reflect/MagicAccessorImpl") \ | |
194 template(sun_reflect_MethodAccessorImpl, "sun/reflect/MethodAccessorImpl") \ | |
195 template(sun_reflect_ConstructorAccessorImpl, "sun/reflect/ConstructorAccessorImpl") \ | |
196 template(sun_reflect_SerializationConstructorAccessorImpl, "sun/reflect/SerializationConstructorAccessorImpl") \ | |
197 template(sun_reflect_DelegatingClassLoader, "sun/reflect/DelegatingClassLoader") \ | |
198 template(sun_reflect_Reflection, "sun/reflect/Reflection") \ | |
199 template(checkedExceptions_name, "checkedExceptions") \ | |
200 template(clazz_name, "clazz") \ | |
201 template(exceptionTypes_name, "exceptionTypes") \ | |
202 template(modifiers_name, "modifiers") \ | |
203 template(newConstructor_name, "newConstructor") \ | |
204 template(newConstructor_signature, "(Lsun/reflect/MethodInfo;)Ljava/lang/reflect/Constructor;") \ | |
205 template(newField_name, "newField") \ | |
206 template(newField_signature, "(Lsun/reflect/FieldInfo;)Ljava/lang/reflect/Field;") \ | |
207 template(newMethod_name, "newMethod") \ | |
208 template(newMethod_signature, "(Lsun/reflect/MethodInfo;)Ljava/lang/reflect/Method;") \ | |
1507
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
209 /* the following two names must be in order: */ \ |
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
210 template(invokeExact_name, "invokeExact") \ |
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
211 template(invokeGeneric_name, "invokeGeneric") \ |
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
212 template(invokeVarargs_name, "invokeVarargs") \ |
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
213 template(star_name, "*") /*not really a name*/ \ |
0 | 214 template(invoke_name, "invoke") \ |
215 template(override_name, "override") \ | |
216 template(parameterTypes_name, "parameterTypes") \ | |
217 template(returnType_name, "returnType") \ | |
218 template(signature_name, "signature") \ | |
219 template(slot_name, "slot") \ | |
220 \ | |
221 /* Support for annotations (JDK 1.5 and above) */ \ | |
222 \ | |
223 template(annotations_name, "annotations") \ | |
224 template(parameter_annotations_name, "parameterAnnotations") \ | |
225 template(annotation_default_name, "annotationDefault") \ | |
226 template(sun_reflect_ConstantPool, "sun/reflect/ConstantPool") \ | |
227 template(constantPoolOop_name, "constantPoolOop") \ | |
228 template(sun_reflect_UnsafeStaticFieldAccessorImpl, "sun/reflect/UnsafeStaticFieldAccessorImpl")\ | |
229 template(base_name, "base") \ | |
230 \ | |
710 | 231 /* Support for JSR 292 & invokedynamic (JDK 1.7 and above) */ \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
232 template(java_lang_invoke_InvokeDynamic, "java/lang/invoke/InvokeDynamic") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
233 template(java_lang_invoke_Linkage, "java/lang/invoke/Linkage") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
234 template(java_lang_invoke_CallSite, "java/lang/invoke/CallSite") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
235 template(java_lang_invoke_MethodHandle, "java/lang/invoke/MethodHandle") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
236 template(java_lang_invoke_MethodType, "java/lang/invoke/MethodType") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
237 template(java_lang_invoke_WrongMethodTypeException, "java/lang/invoke/WrongMethodTypeException") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
238 template(java_lang_invoke_MethodType_signature, "Ljava/lang/invoke/MethodType;") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
239 template(java_lang_invoke_MethodHandle_signature, "Ljava/lang/invoke/MethodHandle;") \ |
710 | 240 /* internal classes known only to the JVM: */ \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
241 template(java_lang_invoke_MethodTypeForm, "java/lang/invoke/MethodTypeForm") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
242 template(java_lang_invoke_MethodTypeForm_signature, "Ljava/lang/invoke/MethodTypeForm;") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
243 template(java_lang_invoke_MemberName, "java/lang/invoke/MemberName") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
244 template(java_lang_invoke_MethodHandleNatives, "java/lang/invoke/MethodHandleNatives") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
245 template(java_lang_invoke_AdapterMethodHandle, "java/lang/invoke/AdapterMethodHandle") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
246 template(java_lang_invoke_BoundMethodHandle, "java/lang/invoke/BoundMethodHandle") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
247 template(java_lang_invoke_DirectMethodHandle, "java/lang/invoke/DirectMethodHandle") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
248 /* internal up-calls made only by the JVM, via class sun.invoke.MethodHandleNatives: */ \ |
1507
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
249 template(findMethodHandleType_name, "findMethodHandleType") \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
250 template(findMethodHandleType_signature, "(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;") \ |
1793
d257356e35f0
6939224: MethodHandle.invokeGeneric needs to perform the correct set of conversions
jrose
parents:
1602
diff
changeset
|
251 template(notifyGenericMethodType_name, "notifyGenericMethodType") \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
252 template(notifyGenericMethodType_signature, "(Ljava/lang/invoke/MethodType;)V") \ |
1602 | 253 template(linkMethodHandleConstant_name, "linkMethodHandleConstant") \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
254 template(linkMethodHandleConstant_signature, "(Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;") \ |
1507
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
255 template(makeDynamicCallSite_name, "makeDynamicCallSite") \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
256 template(makeDynamicCallSite_signature, "(Ljava/lang/invoke/MethodHandle;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/Object;Ljava/lang/invoke/MemberName;I)Ljava/lang/invoke/CallSite;") \ |
710 | 257 NOT_LP64( do_alias(machine_word_signature, int_signature) ) \ |
258 LP64_ONLY( do_alias(machine_word_signature, long_signature) ) \ | |
259 \ | |
260 /* common method and field names */ \ | |
0 | 261 template(object_initializer_name, "<init>") \ |
262 template(class_initializer_name, "<clinit>") \ | |
263 template(println_name, "println") \ | |
264 template(printStackTrace_name, "printStackTrace") \ | |
265 template(main_name, "main") \ | |
266 template(name_name, "name") \ | |
267 template(priority_name, "priority") \ | |
268 template(stillborn_name, "stillborn") \ | |
269 template(group_name, "group") \ | |
270 template(daemon_name, "daemon") \ | |
271 template(eetop_name, "eetop") \ | |
272 template(thread_status_name, "threadStatus") \ | |
273 template(run_method_name, "run") \ | |
274 template(exit_method_name, "exit") \ | |
275 template(add_method_name, "add") \ | |
276 template(parent_name, "parent") \ | |
277 template(threads_name, "threads") \ | |
278 template(groups_name, "groups") \ | |
279 template(maxPriority_name, "maxPriority") \ | |
280 template(destroyed_name, "destroyed") \ | |
281 template(vmAllowSuspension_name, "vmAllowSuspension") \ | |
282 template(nthreads_name, "nthreads") \ | |
283 template(ngroups_name, "ngroups") \ | |
284 template(shutdown_method_name, "shutdown") \ | |
285 template(finalize_method_name, "finalize") \ | |
286 template(reference_lock_name, "lock") \ | |
287 template(reference_discovered_name, "discovered") \ | |
288 template(run_finalizers_on_exit_name, "runFinalizersOnExit") \ | |
289 template(uncaughtException_name, "uncaughtException") \ | |
290 template(dispatchUncaughtException_name, "dispatchUncaughtException") \ | |
291 template(initializeSystemClass_name, "initializeSystemClass") \ | |
292 template(loadClass_name, "loadClass") \ | |
293 template(loadClassInternal_name, "loadClassInternal") \ | |
294 template(get_name, "get") \ | |
295 template(put_name, "put") \ | |
296 template(type_name, "type") \ | |
297 template(findNative_name, "findNative") \ | |
298 template(deadChild_name, "deadChild") \ | |
299 template(addClass_name, "addClass") \ | |
300 template(getFromClass_name, "getFromClass") \ | |
301 template(dispatch_name, "dispatch") \ | |
302 template(getSystemClassLoader_name, "getSystemClassLoader") \ | |
303 template(fillInStackTrace_name, "fillInStackTrace") \ | |
2476
6a615eae2f34
7034585: Adjust fillInStackTrace filtering to assist 6998871
dholmes
parents:
2357
diff
changeset
|
304 template(fillInStackTrace0_name, "fillInStackTrace0") \ |
0 | 305 template(getCause_name, "getCause") \ |
306 template(initCause_name, "initCause") \ | |
307 template(setProperty_name, "setProperty") \ | |
308 template(getProperty_name, "getProperty") \ | |
309 template(context_name, "context") \ | |
310 template(privilegedContext_name, "privilegedContext") \ | |
311 template(contextClassLoader_name, "contextClassLoader") \ | |
312 template(inheritedAccessControlContext_name, "inheritedAccessControlContext") \ | |
313 template(isPrivileged_name, "isPrivileged") \ | |
314 template(wait_name, "wait") \ | |
315 template(checkPackageAccess_name, "checkPackageAccess") \ | |
316 template(stackSize_name, "stackSize") \ | |
317 template(thread_id_name, "tid") \ | |
318 template(newInstance0_name, "newInstance0") \ | |
319 template(limit_name, "limit") \ | |
320 template(forName_name, "forName") \ | |
321 template(forName0_name, "forName0") \ | |
322 template(isJavaIdentifierStart_name, "isJavaIdentifierStart") \ | |
323 template(isJavaIdentifierPart_name, "isJavaIdentifierPart") \ | |
324 template(exclusive_owner_thread_name, "exclusiveOwnerThread") \ | |
325 template(park_blocker_name, "parkBlocker") \ | |
326 template(park_event_name, "nativeParkEventPointer") \ | |
17
ff5961f4c095
6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
never
parents:
0
diff
changeset
|
327 template(cache_field_name, "cache") \ |
0 | 328 template(value_name, "value") \ |
18
c7d713375c94
6621621: HashMap front cache should be enabled only with AggressiveOpts
phh
parents:
17
diff
changeset
|
329 template(frontCacheEnabled_name, "frontCacheEnabled") \ |
192
6d13fcb3663f
6714404: Add UseStringCache switch to enable String caching under AggressiveOpts
kvn
parents:
169
diff
changeset
|
330 template(stringCacheEnabled_name, "stringCacheEnabled") \ |
775
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
331 template(numberOfLeadingZeros_name, "numberOfLeadingZeros") \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
332 template(numberOfTrailingZeros_name, "numberOfTrailingZeros") \ |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
333 template(bitCount_name, "bitCount") \ |
675 | 334 template(profile_name, "profile") \ |
681 | 335 template(equals_name, "equals") \ |
726
be93aad57795
6655646: dynamic languages need dynamically linked call sites
jrose
parents:
710
diff
changeset
|
336 template(target_name, "target") \ |
710 | 337 template(toString_name, "toString") \ |
338 template(values_name, "values") \ | |
339 template(receiver_name, "receiver") \ | |
726
be93aad57795
6655646: dynamic languages need dynamically linked call sites
jrose
parents:
710
diff
changeset
|
340 template(vmmethod_name, "vmmethod") \ |
710 | 341 template(vmtarget_name, "vmtarget") \ |
342 template(vmentry_name, "vmentry") \ | |
343 template(vmslots_name, "vmslots") \ | |
3363
167b70ff3abc
6939861: JVM should handle more conversion operations
never
parents:
3261
diff
changeset
|
344 template(vmlayout_name, "vmlayout") \ |
710 | 345 template(vmindex_name, "vmindex") \ |
346 template(vmargslot_name, "vmargslot") \ | |
347 template(flags_name, "flags") \ | |
348 template(argument_name, "argument") \ | |
349 template(conversion_name, "conversion") \ | |
350 template(rtype_name, "rtype") \ | |
351 template(ptypes_name, "ptypes") \ | |
352 template(form_name, "form") \ | |
353 template(erasedType_name, "erasedType") \ | |
1793
d257356e35f0
6939224: MethodHandle.invokeGeneric needs to perform the correct set of conversions
jrose
parents:
1602
diff
changeset
|
354 template(genericInvoker_name, "genericInvoker") \ |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
355 template(append_name, "append") \ |
0 | 356 \ |
357 /* non-intrinsic name/signature pairs: */ \ | |
358 template(register_method_name, "register") \ | |
359 do_alias(register_method_signature, object_void_signature) \ | |
360 \ | |
361 /* name symbols needed by intrinsics */ \ | |
362 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, template, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) \ | |
363 \ | |
364 /* common signatures names */ \ | |
365 template(void_method_signature, "()V") \ | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
366 template(void_boolean_signature, "()Z") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
367 template(void_byte_signature, "()B") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
368 template(void_char_signature, "()C") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
369 template(void_short_signature, "()S") \ |
0 | 370 template(void_int_signature, "()I") \ |
371 template(void_long_signature, "()J") \ | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
372 template(void_float_signature, "()F") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
373 template(void_double_signature, "()D") \ |
0 | 374 template(int_void_signature, "(I)V") \ |
375 template(int_int_signature, "(I)I") \ | |
1396
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
376 template(char_char_signature, "(C)C") \ |
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
377 template(short_short_signature, "(S)S") \ |
0 | 378 template(int_bool_signature, "(I)Z") \ |
379 template(float_int_signature, "(F)I") \ | |
380 template(double_long_signature, "(D)J") \ | |
381 template(double_double_signature, "(D)D") \ | |
382 template(int_float_signature, "(I)F") \ | |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
383 template(long_int_signature, "(J)I") \ |
0 | 384 template(long_long_signature, "(J)J") \ |
385 template(long_double_signature, "(J)D") \ | |
386 template(byte_signature, "B") \ | |
387 template(char_signature, "C") \ | |
388 template(double_signature, "D") \ | |
389 template(float_signature, "F") \ | |
390 template(int_signature, "I") \ | |
391 template(long_signature, "J") \ | |
392 template(short_signature, "S") \ | |
393 template(bool_signature, "Z") \ | |
394 template(void_signature, "V") \ | |
395 template(byte_array_signature, "[B") \ | |
396 template(char_array_signature, "[C") \ | |
3363
167b70ff3abc
6939861: JVM should handle more conversion operations
never
parents:
3261
diff
changeset
|
397 template(int_array_signature, "[I") \ |
0 | 398 template(object_void_signature, "(Ljava/lang/Object;)V") \ |
399 template(object_int_signature, "(Ljava/lang/Object;)I") \ | |
400 template(object_boolean_signature, "(Ljava/lang/Object;)Z") \ | |
401 template(string_void_signature, "(Ljava/lang/String;)V") \ | |
402 template(string_int_signature, "(Ljava/lang/String;)I") \ | |
403 template(throwable_void_signature, "(Ljava/lang/Throwable;)V") \ | |
404 template(void_throwable_signature, "()Ljava/lang/Throwable;") \ | |
405 template(throwable_throwable_signature, "(Ljava/lang/Throwable;)Ljava/lang/Throwable;") \ | |
406 template(class_void_signature, "(Ljava/lang/Class;)V") \ | |
407 template(class_int_signature, "(Ljava/lang/Class;)I") \ | |
408 template(class_boolean_signature, "(Ljava/lang/Class;)Z") \ | |
409 template(throwable_string_void_signature, "(Ljava/lang/Throwable;Ljava/lang/String;)V") \ | |
410 template(string_array_void_signature, "([Ljava/lang/String;)V") \ | |
411 template(string_array_string_array_void_signature, "([Ljava/lang/String;[Ljava/lang/String;)V") \ | |
412 template(thread_throwable_void_signature, "(Ljava/lang/Thread;Ljava/lang/Throwable;)V") \ | |
413 template(thread_void_signature, "(Ljava/lang/Thread;)V") \ | |
414 template(threadgroup_runnable_void_signature, "(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V") \ | |
415 template(threadgroup_string_void_signature, "(Ljava/lang/ThreadGroup;Ljava/lang/String;)V") \ | |
416 template(string_class_signature, "(Ljava/lang/String;)Ljava/lang/Class;") \ | |
417 template(object_object_object_signature, "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;") \ | |
418 template(string_string_string_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;") \ | |
419 template(string_string_signature, "(Ljava/lang/String;)Ljava/lang/String;") \ | |
420 template(classloader_string_long_signature, "(Ljava/lang/ClassLoader;Ljava/lang/String;)J") \ | |
421 template(byte_array_void_signature, "([B)V") \ | |
422 template(char_array_void_signature, "([C)V") \ | |
423 template(int_int_void_signature, "(II)V") \ | |
424 template(long_long_void_signature, "(JJ)V") \ | |
425 template(void_classloader_signature, "()Ljava/lang/ClassLoader;") \ | |
426 template(void_object_signature, "()Ljava/lang/Object;") \ | |
427 template(void_class_signature, "()Ljava/lang/Class;") \ | |
1507
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
428 template(void_string_signature, "()Ljava/lang/String;") \ |
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
429 template(object_array_object_signature, "([Ljava/lang/Object;)Ljava/lang/Object;") \ |
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
430 template(object_object_array_object_signature, "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;")\ |
0 | 431 template(exception_void_signature, "(Ljava/lang/Exception;)V") \ |
432 template(protectiondomain_signature, "[Ljava/security/ProtectionDomain;") \ | |
433 template(accesscontrolcontext_signature, "Ljava/security/AccessControlContext;") \ | |
434 template(class_protectiondomain_signature, "(Ljava/lang/Class;Ljava/security/ProtectionDomain;)V") \ | |
435 template(thread_signature, "Ljava/lang/Thread;") \ | |
436 template(thread_array_signature, "[Ljava/lang/Thread;") \ | |
437 template(threadgroup_signature, "Ljava/lang/ThreadGroup;") \ | |
438 template(threadgroup_array_signature, "[Ljava/lang/ThreadGroup;") \ | |
439 template(class_array_signature, "[Ljava/lang/Class;") \ | |
440 template(classloader_signature, "Ljava/lang/ClassLoader;") \ | |
441 template(object_signature, "Ljava/lang/Object;") \ | |
442 template(class_signature, "Ljava/lang/Class;") \ | |
443 template(string_signature, "Ljava/lang/String;") \ | |
444 template(reference_signature, "Ljava/lang/ref/Reference;") \ | |
514 | 445 template(concurrenthashmap_signature, "Ljava/util/concurrent/ConcurrentHashMap;") \ |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
446 template(String_StringBuilder_signature, "(Ljava/lang/String;)Ljava/lang/StringBuilder;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
447 template(int_StringBuilder_signature, "(I)Ljava/lang/StringBuilder;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
448 template(char_StringBuilder_signature, "(C)Ljava/lang/StringBuilder;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
449 template(String_StringBuffer_signature, "(Ljava/lang/String;)Ljava/lang/StringBuffer;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
450 template(int_StringBuffer_signature, "(I)Ljava/lang/StringBuffer;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
451 template(char_StringBuffer_signature, "(C)Ljava/lang/StringBuffer;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
452 template(int_String_signature, "(I)Ljava/lang/String;") \ |
0 | 453 /* signature symbols needed by intrinsics */ \ |
454 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, template, VM_ALIAS_IGNORE) \ | |
455 \ | |
456 /* symbol aliases needed by intrinsics */ \ | |
457 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, do_alias) \ | |
458 \ | |
459 /* returned by the C1 compiler in case there's not enough memory to allocate a new symbol*/ \ | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
460 template(dummy_symbol, "illegal symbol") \ |
0 | 461 \ |
462 /* used by ClassFormatError when class name is not known yet */ \ | |
463 template(unknown_class_name, "<Unknown>") \ | |
464 \ | |
514 | 465 /* used to identify class loaders handling parallel class loading */ \ |
653
e55bcaf3a6a1
6819853: VM does not detect JDK which supports parallel class loaders
acorn
parents:
579
diff
changeset
|
466 template(parallelCapable_name, "parallelLockMap") \ |
514 | 467 \ |
0 | 468 /* JVM monitoring and management support */ \ |
469 template(java_lang_StackTraceElement_array, "[Ljava/lang/StackTraceElement;") \ | |
470 template(java_lang_management_ThreadState, "java/lang/management/ThreadState") \ | |
471 template(java_lang_management_MemoryUsage, "java/lang/management/MemoryUsage") \ | |
472 template(java_lang_management_ThreadInfo, "java/lang/management/ThreadInfo") \ | |
473 template(sun_management_ManagementFactory, "sun/management/ManagementFactory") \ | |
474 template(sun_management_Sensor, "sun/management/Sensor") \ | |
475 template(sun_management_Agent, "sun/management/Agent") \ | |
3356
78542e2b5e35
7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents:
3261
diff
changeset
|
476 template(sun_management_GarbageCollectorImpl, "sun/management/GarbageCollectorImpl") \ |
78542e2b5e35
7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents:
3261
diff
changeset
|
477 template(getGcInfoBuilder_name, "getGcInfoBuilder") \ |
78542e2b5e35
7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents:
3261
diff
changeset
|
478 template(getGcInfoBuilder_signature, "()Lsun/management/GcInfoBuilder;") \ |
78542e2b5e35
7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents:
3261
diff
changeset
|
479 template(com_sun_management_GcInfo, "com/sun/management/GcInfo") \ |
78542e2b5e35
7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents:
3261
diff
changeset
|
480 template(com_sun_management_GcInfo_constructor_signature, "(Lsun/management/GcInfoBuilder;JJJ[Ljava/lang/management/MemoryUsage;[Ljava/lang/management/MemoryUsage;[Ljava/lang/Object;)V") \ |
78542e2b5e35
7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents:
3261
diff
changeset
|
481 template(createGCNotification_name, "createGCNotification") \ |
78542e2b5e35
7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents:
3261
diff
changeset
|
482 template(createGCNotification_signature, "(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/sun/management/GcInfo;)V") \ |
0 | 483 template(createMemoryPoolMBean_name, "createMemoryPoolMBean") \ |
484 template(createMemoryManagerMBean_name, "createMemoryManagerMBean") \ | |
485 template(createGarbageCollectorMBean_name, "createGarbageCollectorMBean") \ | |
486 template(createMemoryPoolMBean_signature, "(Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMBean;") \ | |
487 template(createMemoryManagerMBean_signature, "(Ljava/lang/String;)Ljava/lang/management/MemoryManagerMBean;") \ | |
488 template(createGarbageCollectorMBean_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMBean;") \ | |
489 template(trigger_name, "trigger") \ | |
490 template(clear_name, "clear") \ | |
491 template(trigger_method_signature, "(ILjava/lang/management/MemoryUsage;)V") \ | |
492 template(startAgent_name, "startAgent") \ | |
493 template(java_lang_management_ThreadInfo_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;)V") \ | |
494 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") \ | |
495 template(long_long_long_long_void_signature, "(JJJJ)V") \ | |
496 \ | |
497 template(java_lang_management_MemoryPoolMXBean, "java/lang/management/MemoryPoolMXBean") \ | |
498 template(java_lang_management_MemoryManagerMXBean, "java/lang/management/MemoryManagerMXBean") \ | |
499 template(java_lang_management_GarbageCollectorMXBean,"java/lang/management/GarbageCollectorMXBean") \ | |
3356
78542e2b5e35
7036199: Adding a notification to the implementation of GarbageCollectorMXBeans
fparain
parents:
3261
diff
changeset
|
500 template(gcInfoBuilder_name, "gcInfoBuilder") \ |
0 | 501 template(createMemoryPool_name, "createMemoryPool") \ |
502 template(createMemoryManager_name, "createMemoryManager") \ | |
503 template(createGarbageCollector_name, "createGarbageCollector") \ | |
504 template(createMemoryPool_signature, "(Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMXBean;") \ | |
505 template(createMemoryManager_signature, "(Ljava/lang/String;)Ljava/lang/management/MemoryManagerMXBean;") \ | |
506 template(createGarbageCollector_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMXBean;") \ | |
507 template(addThreadDumpForMonitors_name, "addThreadDumpForMonitors") \ | |
508 template(addThreadDumpForSynchronizers_name, "addThreadDumpForSynchronizers") \ | |
509 template(addThreadDumpForMonitors_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;[I)V") \ | |
510 template(addThreadDumpForSynchronizers_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;)V") \ | |
511 \ | |
512 /* JVMTI/java.lang.instrument support and VM Attach mechanism */ \ | |
513 template(sun_misc_VMSupport, "sun/misc/VMSupport") \ | |
514 template(appendToClassPathForInstrumentation_name, "appendToClassPathForInstrumentation") \ | |
515 do_alias(appendToClassPathForInstrumentation_signature, string_void_signature) \ | |
516 template(serializePropertiesToByteArray_name, "serializePropertiesToByteArray") \ | |
517 template(serializePropertiesToByteArray_signature, "()[B") \ | |
518 template(serializeAgentPropertiesToByteArray_name, "serializeAgentPropertiesToByteArray") \ | |
519 template(classRedefinedCount_name, "classRedefinedCount") \ | |
520 /*end*/ | |
521 | |
522 | |
523 | |
524 // Here are all the intrinsics known to the runtime and the CI. | |
525 // Each intrinsic consists of a public enum name (like _hashCode), | |
526 // followed by a specification of its klass, name, and signature: | |
527 // template(<id>, <klass>, <name>, <sig>, <FCODE>) | |
528 // | |
529 // If you add an intrinsic here, you must also define its name | |
530 // and signature as members of the VM symbols. The VM symbols for | |
531 // the intrinsic name and signature may be defined above. | |
532 // | |
533 // Because the VM_SYMBOLS_DO macro makes reference to VM_INTRINSICS_DO, | |
534 // you can also define an intrinsic's name and/or signature locally to the | |
535 // intrinsic, if this makes sense. (It often does make sense.) | |
536 // | |
537 // For example: | |
538 // do_intrinsic(_foo, java_lang_Object, foo_name, foo_signature, F_xx) | |
539 // do_name( foo_name, "foo") | |
540 // do_signature(foo_signature, "()F") | |
541 // klass = vmSymbols::java_lang_Object() | |
542 // name = vmSymbols::foo_name() | |
543 // signature = vmSymbols::foo_signature() | |
544 // | |
545 // The name and/or signature might be a "well known" symbol | |
546 // like "equal" or "()I", in which case there will be no local | |
547 // re-definition of the symbol. | |
548 // | |
549 // The do_class, do_name, and do_signature calls are all used for the | |
550 // same purpose: Define yet another VM symbol. They could all be merged | |
551 // into a common 'do_symbol' call, but it seems useful to record our | |
552 // intentions here about kinds of symbols (class vs. name vs. signature). | |
553 // | |
554 // The F_xx is one of the Flags enum; see below. | |
555 // | |
556 // for Emacs: (let ((c-backslash-column 120) (c-backslash-max-column 120)) (c-backslash-region (point) (point-max) nil t)) | |
557 #define VM_INTRINSICS_DO(do_intrinsic, do_class, do_name, do_signature, do_alias) \ | |
558 do_intrinsic(_hashCode, java_lang_Object, hashCode_name, void_int_signature, F_R) \ | |
559 do_name( hashCode_name, "hashCode") \ | |
560 do_intrinsic(_getClass, java_lang_Object, getClass_name, void_class_signature, F_R) \ | |
561 do_name( getClass_name, "getClass") \ | |
562 do_intrinsic(_clone, java_lang_Object, clone_name, void_object_signature, F_R) \ | |
563 do_name( clone_name, "clone") \ | |
564 \ | |
565 /* Math & StrictMath intrinsics are defined in terms of just a few signatures: */ \ | |
566 do_class(java_lang_Math, "java/lang/Math") \ | |
567 do_class(java_lang_StrictMath, "java/lang/StrictMath") \ | |
568 do_signature(double2_double_signature, "(DD)D") \ | |
569 do_signature(int2_int_signature, "(II)I") \ | |
570 \ | |
571 /* here are the math names, all together: */ \ | |
572 do_name(abs_name,"abs") do_name(sin_name,"sin") do_name(cos_name,"cos") \ | |
573 do_name(tan_name,"tan") do_name(atan2_name,"atan2") do_name(sqrt_name,"sqrt") \ | |
574 do_name(log_name,"log") do_name(log10_name,"log10") do_name(pow_name,"pow") \ | |
575 do_name(exp_name,"exp") do_name(min_name,"min") do_name(max_name,"max") \ | |
576 \ | |
577 do_intrinsic(_dabs, java_lang_Math, abs_name, double_double_signature, F_S) \ | |
578 do_intrinsic(_dsin, java_lang_Math, sin_name, double_double_signature, F_S) \ | |
579 do_intrinsic(_dcos, java_lang_Math, cos_name, double_double_signature, F_S) \ | |
580 do_intrinsic(_dtan, java_lang_Math, tan_name, double_double_signature, F_S) \ | |
581 do_intrinsic(_datan2, java_lang_Math, atan2_name, double2_double_signature, F_S) \ | |
582 do_intrinsic(_dsqrt, java_lang_Math, sqrt_name, double_double_signature, F_S) \ | |
583 do_intrinsic(_dlog, java_lang_Math, log_name, double_double_signature, F_S) \ | |
584 do_intrinsic(_dlog10, java_lang_Math, log10_name, double_double_signature, F_S) \ | |
585 do_intrinsic(_dpow, java_lang_Math, pow_name, double2_double_signature, F_S) \ | |
586 do_intrinsic(_dexp, java_lang_Math, exp_name, double_double_signature, F_S) \ | |
587 do_intrinsic(_min, java_lang_Math, min_name, int2_int_signature, F_S) \ | |
588 do_intrinsic(_max, java_lang_Math, max_name, int2_int_signature, F_S) \ | |
589 \ | |
590 do_intrinsic(_floatToRawIntBits, java_lang_Float, floatToRawIntBits_name, float_int_signature, F_S) \ | |
591 do_name( floatToRawIntBits_name, "floatToRawIntBits") \ | |
592 do_intrinsic(_floatToIntBits, java_lang_Float, floatToIntBits_name, float_int_signature, F_S) \ | |
593 do_name( floatToIntBits_name, "floatToIntBits") \ | |
594 do_intrinsic(_intBitsToFloat, java_lang_Float, intBitsToFloat_name, int_float_signature, F_S) \ | |
595 do_name( intBitsToFloat_name, "intBitsToFloat") \ | |
596 do_intrinsic(_doubleToRawLongBits, java_lang_Double, doubleToRawLongBits_name, double_long_signature, F_S) \ | |
597 do_name( doubleToRawLongBits_name, "doubleToRawLongBits") \ | |
598 do_intrinsic(_doubleToLongBits, java_lang_Double, doubleToLongBits_name, double_long_signature, F_S) \ | |
599 do_name( doubleToLongBits_name, "doubleToLongBits") \ | |
600 do_intrinsic(_longBitsToDouble, java_lang_Double, longBitsToDouble_name, long_double_signature, F_S) \ | |
601 do_name( longBitsToDouble_name, "longBitsToDouble") \ | |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
602 \ |
775
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
603 do_intrinsic(_numberOfLeadingZeros_i, java_lang_Integer, numberOfLeadingZeros_name,int_int_signature, F_S) \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
604 do_intrinsic(_numberOfLeadingZeros_l, java_lang_Long, numberOfLeadingZeros_name,long_int_signature, F_S) \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
605 \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
606 do_intrinsic(_numberOfTrailingZeros_i, java_lang_Integer, numberOfTrailingZeros_name,int_int_signature, F_S) \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
607 do_intrinsic(_numberOfTrailingZeros_l, java_lang_Long, numberOfTrailingZeros_name,long_int_signature, F_S) \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
608 \ |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
609 do_intrinsic(_bitCount_i, java_lang_Integer, bitCount_name, int_int_signature, F_S) \ |
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
610 do_intrinsic(_bitCount_l, java_lang_Long, bitCount_name, long_int_signature, F_S) \ |
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
611 \ |
0 | 612 do_intrinsic(_reverseBytes_i, java_lang_Integer, reverseBytes_name, int_int_signature, F_S) \ |
613 do_name( reverseBytes_name, "reverseBytes") \ | |
614 do_intrinsic(_reverseBytes_l, java_lang_Long, reverseBytes_name, long_long_signature, F_S) \ | |
615 /* (symbol reverseBytes_name defined above) */ \ | |
1396
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
616 do_intrinsic(_reverseBytes_c, java_lang_Character, reverseBytes_name, char_char_signature, F_S) \ |
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
617 /* (symbol reverseBytes_name defined above) */ \ |
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
618 do_intrinsic(_reverseBytes_s, java_lang_Short, reverseBytes_name, short_short_signature, F_S) \ |
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
619 /* (symbol reverseBytes_name defined above) */ \ |
0 | 620 \ |
621 do_intrinsic(_identityHashCode, java_lang_System, identityHashCode_name, object_int_signature, F_S) \ | |
622 do_name( identityHashCode_name, "identityHashCode") \ | |
623 do_intrinsic(_currentTimeMillis, java_lang_System, currentTimeMillis_name, void_long_signature, F_S) \ | |
624 \ | |
625 do_name( currentTimeMillis_name, "currentTimeMillis") \ | |
626 do_intrinsic(_nanoTime, java_lang_System, nanoTime_name, void_long_signature, F_S) \ | |
627 do_name( nanoTime_name, "nanoTime") \ | |
628 \ | |
629 do_intrinsic(_arraycopy, java_lang_System, arraycopy_name, arraycopy_signature, F_S) \ | |
630 do_name( arraycopy_name, "arraycopy") \ | |
631 do_signature(arraycopy_signature, "(Ljava/lang/Object;ILjava/lang/Object;II)V") \ | |
632 do_intrinsic(_isInterrupted, java_lang_Thread, isInterrupted_name, isInterrupted_signature, F_R) \ | |
633 do_name( isInterrupted_name, "isInterrupted") \ | |
634 do_signature(isInterrupted_signature, "(Z)Z") \ | |
635 do_intrinsic(_currentThread, java_lang_Thread, currentThread_name, currentThread_signature, F_S) \ | |
636 do_name( currentThread_name, "currentThread") \ | |
637 do_signature(currentThread_signature, "()Ljava/lang/Thread;") \ | |
638 \ | |
639 /* reflective intrinsics, for java/lang/Class, etc. */ \ | |
640 do_intrinsic(_isAssignableFrom, java_lang_Class, isAssignableFrom_name, class_boolean_signature, F_RN) \ | |
641 do_name( isAssignableFrom_name, "isAssignableFrom") \ | |
642 do_intrinsic(_isInstance, java_lang_Class, isInstance_name, object_boolean_signature, F_RN) \ | |
643 do_name( isInstance_name, "isInstance") \ | |
644 do_intrinsic(_getModifiers, java_lang_Class, getModifiers_name, void_int_signature, F_RN) \ | |
645 do_name( getModifiers_name, "getModifiers") \ | |
646 do_intrinsic(_isInterface, java_lang_Class, isInterface_name, void_boolean_signature, F_RN) \ | |
647 do_name( isInterface_name, "isInterface") \ | |
648 do_intrinsic(_isArray, java_lang_Class, isArray_name, void_boolean_signature, F_RN) \ | |
649 do_name( isArray_name, "isArray") \ | |
650 do_intrinsic(_isPrimitive, java_lang_Class, isPrimitive_name, void_boolean_signature, F_RN) \ | |
651 do_name( isPrimitive_name, "isPrimitive") \ | |
652 do_intrinsic(_getSuperclass, java_lang_Class, getSuperclass_name, void_class_signature, F_RN) \ | |
653 do_name( getSuperclass_name, "getSuperclass") \ | |
654 do_intrinsic(_getComponentType, java_lang_Class, getComponentType_name, void_class_signature, F_RN) \ | |
655 do_name( getComponentType_name, "getComponentType") \ | |
656 \ | |
657 do_intrinsic(_getClassAccessFlags, sun_reflect_Reflection, getClassAccessFlags_name, class_int_signature, F_SN) \ | |
658 do_name( getClassAccessFlags_name, "getClassAccessFlags") \ | |
659 do_intrinsic(_getLength, java_lang_reflect_Array, getLength_name, object_int_signature, F_SN) \ | |
660 do_name( getLength_name, "getLength") \ | |
661 \ | |
662 do_intrinsic(_getCallerClass, sun_reflect_Reflection, getCallerClass_name, getCallerClass_signature, F_SN) \ | |
663 do_name( getCallerClass_name, "getCallerClass") \ | |
664 do_signature(getCallerClass_signature, "(I)Ljava/lang/Class;") \ | |
665 \ | |
666 do_intrinsic(_newArray, java_lang_reflect_Array, newArray_name, newArray_signature, F_SN) \ | |
667 do_name( newArray_name, "newArray") \ | |
668 do_signature(newArray_signature, "(Ljava/lang/Class;I)Ljava/lang/Object;") \ | |
669 \ | |
670 do_intrinsic(_copyOf, java_util_Arrays, copyOf_name, copyOf_signature, F_S) \ | |
671 do_name( copyOf_name, "copyOf") \ | |
672 do_signature(copyOf_signature, "([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;") \ | |
673 \ | |
674 do_intrinsic(_copyOfRange, java_util_Arrays, copyOfRange_name, copyOfRange_signature, F_S) \ | |
675 do_name( copyOfRange_name, "copyOfRange") \ | |
676 do_signature(copyOfRange_signature, "([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;") \ | |
677 \ | |
169
9148c65abefc
6695049: (coll) Create an x86 intrinsic for Arrays.equals
rasbold
parents:
45
diff
changeset
|
678 do_intrinsic(_equalsC, java_util_Arrays, equals_name, equalsC_signature, F_S) \ |
9148c65abefc
6695049: (coll) Create an x86 intrinsic for Arrays.equals
rasbold
parents:
45
diff
changeset
|
679 do_signature(equalsC_signature, "([C[C)Z") \ |
9148c65abefc
6695049: (coll) Create an x86 intrinsic for Arrays.equals
rasbold
parents:
45
diff
changeset
|
680 \ |
0 | 681 do_intrinsic(_compareTo, java_lang_String, compareTo_name, string_int_signature, F_R) \ |
682 do_name( compareTo_name, "compareTo") \ | |
683 do_intrinsic(_indexOf, java_lang_String, indexOf_name, string_int_signature, F_R) \ | |
684 do_name( indexOf_name, "indexOf") \ | |
681 | 685 do_intrinsic(_equals, java_lang_String, equals_name, object_boolean_signature, F_R) \ |
0 | 686 \ |
687 do_class(java_nio_Buffer, "java/nio/Buffer") \ | |
688 do_intrinsic(_checkIndex, java_nio_Buffer, checkIndex_name, int_int_signature, F_R) \ | |
689 do_name( checkIndex_name, "checkIndex") \ | |
690 \ | |
3249
e1162778c1c8
7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
johnc
parents:
2357
diff
changeset
|
691 /* java/lang/ref/Reference */ \ |
e1162778c1c8
7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
johnc
parents:
2357
diff
changeset
|
692 do_intrinsic(_Reference_get, java_lang_ref_Reference, get_name, void_object_signature, F_R) \ |
e1162778c1c8
7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
johnc
parents:
2357
diff
changeset
|
693 \ |
e1162778c1c8
7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
johnc
parents:
2357
diff
changeset
|
694 \ |
0 | 695 do_class(sun_misc_AtomicLongCSImpl, "sun/misc/AtomicLongCSImpl") \ |
696 do_intrinsic(_get_AtomicLong, sun_misc_AtomicLongCSImpl, get_name, void_long_signature, F_R) \ | |
697 /* (symbols get_name and void_long_signature defined above) */ \ | |
698 \ | |
699 do_intrinsic(_attemptUpdate, sun_misc_AtomicLongCSImpl, attemptUpdate_name, attemptUpdate_signature, F_R) \ | |
700 do_name( attemptUpdate_name, "attemptUpdate") \ | |
701 do_signature(attemptUpdate_signature, "(JJ)Z") \ | |
702 \ | |
703 /* support for sun.misc.Unsafe */ \ | |
704 do_class(sun_misc_Unsafe, "sun/misc/Unsafe") \ | |
705 \ | |
706 do_intrinsic(_allocateInstance, sun_misc_Unsafe, allocateInstance_name, allocateInstance_signature, F_RN) \ | |
707 do_name( allocateInstance_name, "allocateInstance") \ | |
708 do_signature(allocateInstance_signature, "(Ljava/lang/Class;)Ljava/lang/Object;") \ | |
709 do_intrinsic(_copyMemory, sun_misc_Unsafe, copyMemory_name, copyMemory_signature, F_RN) \ | |
710 do_name( copyMemory_name, "copyMemory") \ | |
711 do_signature(copyMemory_signature, "(Ljava/lang/Object;JLjava/lang/Object;JJ)V") \ | |
712 do_intrinsic(_park, sun_misc_Unsafe, park_name, park_signature, F_RN) \ | |
713 do_name( park_name, "park") \ | |
714 do_signature(park_signature, "(ZJ)V") \ | |
715 do_intrinsic(_unpark, sun_misc_Unsafe, unpark_name, unpark_signature, F_RN) \ | |
716 do_name( unpark_name, "unpark") \ | |
717 do_alias( unpark_signature, /*(LObject;)V*/ object_void_signature) \ | |
718 \ | |
719 /* unsafe memory references (there are a lot of them...) */ \ | |
720 do_signature(getObject_signature, "(Ljava/lang/Object;J)Ljava/lang/Object;") \ | |
721 do_signature(putObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;)V") \ | |
722 do_signature(getBoolean_signature, "(Ljava/lang/Object;J)Z") \ | |
723 do_signature(putBoolean_signature, "(Ljava/lang/Object;JZ)V") \ | |
724 do_signature(getByte_signature, "(Ljava/lang/Object;J)B") \ | |
725 do_signature(putByte_signature, "(Ljava/lang/Object;JB)V") \ | |
726 do_signature(getShort_signature, "(Ljava/lang/Object;J)S") \ | |
727 do_signature(putShort_signature, "(Ljava/lang/Object;JS)V") \ | |
728 do_signature(getChar_signature, "(Ljava/lang/Object;J)C") \ | |
729 do_signature(putChar_signature, "(Ljava/lang/Object;JC)V") \ | |
730 do_signature(getInt_signature, "(Ljava/lang/Object;J)I") \ | |
731 do_signature(putInt_signature, "(Ljava/lang/Object;JI)V") \ | |
732 do_signature(getLong_signature, "(Ljava/lang/Object;J)J") \ | |
733 do_signature(putLong_signature, "(Ljava/lang/Object;JJ)V") \ | |
734 do_signature(getFloat_signature, "(Ljava/lang/Object;J)F") \ | |
735 do_signature(putFloat_signature, "(Ljava/lang/Object;JF)V") \ | |
736 do_signature(getDouble_signature, "(Ljava/lang/Object;J)D") \ | |
737 do_signature(putDouble_signature, "(Ljava/lang/Object;JD)V") \ | |
738 \ | |
739 do_name(getObject_name,"getObject") do_name(putObject_name,"putObject") \ | |
740 do_name(getBoolean_name,"getBoolean") do_name(putBoolean_name,"putBoolean") \ | |
741 do_name(getByte_name,"getByte") do_name(putByte_name,"putByte") \ | |
742 do_name(getShort_name,"getShort") do_name(putShort_name,"putShort") \ | |
743 do_name(getChar_name,"getChar") do_name(putChar_name,"putChar") \ | |
744 do_name(getInt_name,"getInt") do_name(putInt_name,"putInt") \ | |
745 do_name(getLong_name,"getLong") do_name(putLong_name,"putLong") \ | |
746 do_name(getFloat_name,"getFloat") do_name(putFloat_name,"putFloat") \ | |
747 do_name(getDouble_name,"getDouble") do_name(putDouble_name,"putDouble") \ | |
748 \ | |
749 do_intrinsic(_getObject, sun_misc_Unsafe, getObject_name, getObject_signature, F_RN) \ | |
750 do_intrinsic(_getBoolean, sun_misc_Unsafe, getBoolean_name, getBoolean_signature, F_RN) \ | |
751 do_intrinsic(_getByte, sun_misc_Unsafe, getByte_name, getByte_signature, F_RN) \ | |
752 do_intrinsic(_getShort, sun_misc_Unsafe, getShort_name, getShort_signature, F_RN) \ | |
753 do_intrinsic(_getChar, sun_misc_Unsafe, getChar_name, getChar_signature, F_RN) \ | |
754 do_intrinsic(_getInt, sun_misc_Unsafe, getInt_name, getInt_signature, F_RN) \ | |
755 do_intrinsic(_getLong, sun_misc_Unsafe, getLong_name, getLong_signature, F_RN) \ | |
756 do_intrinsic(_getFloat, sun_misc_Unsafe, getFloat_name, getFloat_signature, F_RN) \ | |
757 do_intrinsic(_getDouble, sun_misc_Unsafe, getDouble_name, getDouble_signature, F_RN) \ | |
758 do_intrinsic(_putObject, sun_misc_Unsafe, putObject_name, putObject_signature, F_RN) \ | |
759 do_intrinsic(_putBoolean, sun_misc_Unsafe, putBoolean_name, putBoolean_signature, F_RN) \ | |
760 do_intrinsic(_putByte, sun_misc_Unsafe, putByte_name, putByte_signature, F_RN) \ | |
761 do_intrinsic(_putShort, sun_misc_Unsafe, putShort_name, putShort_signature, F_RN) \ | |
762 do_intrinsic(_putChar, sun_misc_Unsafe, putChar_name, putChar_signature, F_RN) \ | |
763 do_intrinsic(_putInt, sun_misc_Unsafe, putInt_name, putInt_signature, F_RN) \ | |
764 do_intrinsic(_putLong, sun_misc_Unsafe, putLong_name, putLong_signature, F_RN) \ | |
765 do_intrinsic(_putFloat, sun_misc_Unsafe, putFloat_name, putFloat_signature, F_RN) \ | |
766 do_intrinsic(_putDouble, sun_misc_Unsafe, putDouble_name, putDouble_signature, F_RN) \ | |
767 \ | |
768 do_name(getObjectVolatile_name,"getObjectVolatile") do_name(putObjectVolatile_name,"putObjectVolatile") \ | |
769 do_name(getBooleanVolatile_name,"getBooleanVolatile") do_name(putBooleanVolatile_name,"putBooleanVolatile") \ | |
770 do_name(getByteVolatile_name,"getByteVolatile") do_name(putByteVolatile_name,"putByteVolatile") \ | |
771 do_name(getShortVolatile_name,"getShortVolatile") do_name(putShortVolatile_name,"putShortVolatile") \ | |
772 do_name(getCharVolatile_name,"getCharVolatile") do_name(putCharVolatile_name,"putCharVolatile") \ | |
773 do_name(getIntVolatile_name,"getIntVolatile") do_name(putIntVolatile_name,"putIntVolatile") \ | |
774 do_name(getLongVolatile_name,"getLongVolatile") do_name(putLongVolatile_name,"putLongVolatile") \ | |
775 do_name(getFloatVolatile_name,"getFloatVolatile") do_name(putFloatVolatile_name,"putFloatVolatile") \ | |
776 do_name(getDoubleVolatile_name,"getDoubleVolatile") do_name(putDoubleVolatile_name,"putDoubleVolatile") \ | |
777 \ | |
778 do_intrinsic(_getObjectVolatile, sun_misc_Unsafe, getObjectVolatile_name, getObject_signature, F_RN) \ | |
779 do_intrinsic(_getBooleanVolatile, sun_misc_Unsafe, getBooleanVolatile_name, getBoolean_signature, F_RN) \ | |
780 do_intrinsic(_getByteVolatile, sun_misc_Unsafe, getByteVolatile_name, getByte_signature, F_RN) \ | |
781 do_intrinsic(_getShortVolatile, sun_misc_Unsafe, getShortVolatile_name, getShort_signature, F_RN) \ | |
782 do_intrinsic(_getCharVolatile, sun_misc_Unsafe, getCharVolatile_name, getChar_signature, F_RN) \ | |
783 do_intrinsic(_getIntVolatile, sun_misc_Unsafe, getIntVolatile_name, getInt_signature, F_RN) \ | |
784 do_intrinsic(_getLongVolatile, sun_misc_Unsafe, getLongVolatile_name, getLong_signature, F_RN) \ | |
785 do_intrinsic(_getFloatVolatile, sun_misc_Unsafe, getFloatVolatile_name, getFloat_signature, F_RN) \ | |
786 do_intrinsic(_getDoubleVolatile, sun_misc_Unsafe, getDoubleVolatile_name, getDouble_signature, F_RN) \ | |
787 do_intrinsic(_putObjectVolatile, sun_misc_Unsafe, putObjectVolatile_name, putObject_signature, F_RN) \ | |
788 do_intrinsic(_putBooleanVolatile, sun_misc_Unsafe, putBooleanVolatile_name, putBoolean_signature, F_RN) \ | |
789 do_intrinsic(_putByteVolatile, sun_misc_Unsafe, putByteVolatile_name, putByte_signature, F_RN) \ | |
790 do_intrinsic(_putShortVolatile, sun_misc_Unsafe, putShortVolatile_name, putShort_signature, F_RN) \ | |
791 do_intrinsic(_putCharVolatile, sun_misc_Unsafe, putCharVolatile_name, putChar_signature, F_RN) \ | |
792 do_intrinsic(_putIntVolatile, sun_misc_Unsafe, putIntVolatile_name, putInt_signature, F_RN) \ | |
793 do_intrinsic(_putLongVolatile, sun_misc_Unsafe, putLongVolatile_name, putLong_signature, F_RN) \ | |
794 do_intrinsic(_putFloatVolatile, sun_misc_Unsafe, putFloatVolatile_name, putFloat_signature, F_RN) \ | |
795 do_intrinsic(_putDoubleVolatile, sun_misc_Unsafe, putDoubleVolatile_name, putDouble_signature, F_RN) \ | |
796 \ | |
797 /* %%% these are redundant except perhaps for getAddress, but Unsafe has native methods for them */ \ | |
798 do_signature(getByte_raw_signature, "(J)B") \ | |
799 do_signature(putByte_raw_signature, "(JB)V") \ | |
800 do_signature(getShort_raw_signature, "(J)S") \ | |
801 do_signature(putShort_raw_signature, "(JS)V") \ | |
802 do_signature(getChar_raw_signature, "(J)C") \ | |
803 do_signature(putChar_raw_signature, "(JC)V") \ | |
804 do_signature(putInt_raw_signature, "(JI)V") \ | |
805 do_alias(getLong_raw_signature, /*(J)J*/ long_long_signature) \ | |
806 do_alias(putLong_raw_signature, /*(JJ)V*/ long_long_void_signature) \ | |
807 do_signature(getFloat_raw_signature, "(J)F") \ | |
808 do_signature(putFloat_raw_signature, "(JF)V") \ | |
809 do_alias(getDouble_raw_signature, /*(J)D*/ long_double_signature) \ | |
810 do_signature(putDouble_raw_signature, "(JD)V") \ | |
811 do_alias(getAddress_raw_signature, /*(J)J*/ long_long_signature) \ | |
812 do_alias(putAddress_raw_signature, /*(JJ)V*/ long_long_void_signature) \ | |
813 \ | |
814 do_name( getAddress_name, "getAddress") \ | |
815 do_name( putAddress_name, "putAddress") \ | |
816 \ | |
817 do_intrinsic(_getByte_raw, sun_misc_Unsafe, getByte_name, getByte_raw_signature, F_RN) \ | |
818 do_intrinsic(_getShort_raw, sun_misc_Unsafe, getShort_name, getShort_raw_signature, F_RN) \ | |
819 do_intrinsic(_getChar_raw, sun_misc_Unsafe, getChar_name, getChar_raw_signature, F_RN) \ | |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
820 do_intrinsic(_getInt_raw, sun_misc_Unsafe, getInt_name, long_int_signature, F_RN) \ |
0 | 821 do_intrinsic(_getLong_raw, sun_misc_Unsafe, getLong_name, getLong_raw_signature, F_RN) \ |
822 do_intrinsic(_getFloat_raw, sun_misc_Unsafe, getFloat_name, getFloat_raw_signature, F_RN) \ | |
823 do_intrinsic(_getDouble_raw, sun_misc_Unsafe, getDouble_name, getDouble_raw_signature, F_RN) \ | |
824 do_intrinsic(_getAddress_raw, sun_misc_Unsafe, getAddress_name, getAddress_raw_signature, F_RN) \ | |
825 do_intrinsic(_putByte_raw, sun_misc_Unsafe, putByte_name, putByte_raw_signature, F_RN) \ | |
826 do_intrinsic(_putShort_raw, sun_misc_Unsafe, putShort_name, putShort_raw_signature, F_RN) \ | |
827 do_intrinsic(_putChar_raw, sun_misc_Unsafe, putChar_name, putChar_raw_signature, F_RN) \ | |
828 do_intrinsic(_putInt_raw, sun_misc_Unsafe, putInt_name, putInt_raw_signature, F_RN) \ | |
829 do_intrinsic(_putLong_raw, sun_misc_Unsafe, putLong_name, putLong_raw_signature, F_RN) \ | |
830 do_intrinsic(_putFloat_raw, sun_misc_Unsafe, putFloat_name, putFloat_raw_signature, F_RN) \ | |
831 do_intrinsic(_putDouble_raw, sun_misc_Unsafe, putDouble_name, putDouble_raw_signature, F_RN) \ | |
832 do_intrinsic(_putAddress_raw, sun_misc_Unsafe, putAddress_name, putAddress_raw_signature, F_RN) \ | |
833 \ | |
834 do_intrinsic(_compareAndSwapObject, sun_misc_Unsafe, compareAndSwapObject_name, compareAndSwapObject_signature, F_RN) \ | |
835 do_name( compareAndSwapObject_name, "compareAndSwapObject") \ | |
836 do_signature(compareAndSwapObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z") \ | |
837 do_intrinsic(_compareAndSwapLong, sun_misc_Unsafe, compareAndSwapLong_name, compareAndSwapLong_signature, F_RN) \ | |
838 do_name( compareAndSwapLong_name, "compareAndSwapLong") \ | |
839 do_signature(compareAndSwapLong_signature, "(Ljava/lang/Object;JJJ)Z") \ | |
840 do_intrinsic(_compareAndSwapInt, sun_misc_Unsafe, compareAndSwapInt_name, compareAndSwapInt_signature, F_RN) \ | |
841 do_name( compareAndSwapInt_name, "compareAndSwapInt") \ | |
842 do_signature(compareAndSwapInt_signature, "(Ljava/lang/Object;JII)Z") \ | |
843 do_intrinsic(_putOrderedObject, sun_misc_Unsafe, putOrderedObject_name, putOrderedObject_signature, F_RN) \ | |
844 do_name( putOrderedObject_name, "putOrderedObject") \ | |
845 do_alias( putOrderedObject_signature, /*(LObject;JLObject;)V*/ putObject_signature) \ | |
846 do_intrinsic(_putOrderedLong, sun_misc_Unsafe, putOrderedLong_name, putOrderedLong_signature, F_RN) \ | |
847 do_name( putOrderedLong_name, "putOrderedLong") \ | |
848 do_alias( putOrderedLong_signature, /*(Ljava/lang/Object;JJ)V*/ putLong_signature) \ | |
849 do_intrinsic(_putOrderedInt, sun_misc_Unsafe, putOrderedInt_name, putOrderedInt_signature, F_RN) \ | |
850 do_name( putOrderedInt_name, "putOrderedInt") \ | |
851 do_alias( putOrderedInt_signature, /*(Ljava/lang/Object;JI)V*/ putInt_signature) \ | |
852 \ | |
853 /* prefetch_signature is shared by all prefetch variants */ \ | |
854 do_signature( prefetch_signature, "(Ljava/lang/Object;J)V") \ | |
855 \ | |
856 do_intrinsic(_prefetchRead, sun_misc_Unsafe, prefetchRead_name, prefetch_signature, F_RN) \ | |
857 do_name( prefetchRead_name, "prefetchRead") \ | |
858 do_intrinsic(_prefetchWrite, sun_misc_Unsafe, prefetchWrite_name, prefetch_signature, F_RN) \ | |
859 do_name( prefetchWrite_name, "prefetchWrite") \ | |
860 do_intrinsic(_prefetchReadStatic, sun_misc_Unsafe, prefetchReadStatic_name, prefetch_signature, F_SN) \ | |
861 do_name( prefetchReadStatic_name, "prefetchReadStatic") \ | |
862 do_intrinsic(_prefetchWriteStatic, sun_misc_Unsafe, prefetchWriteStatic_name, prefetch_signature, F_SN) \ | |
863 do_name( prefetchWriteStatic_name, "prefetchWriteStatic") \ | |
856
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
864 /*== LAST_COMPILER_INLINE*/ \ |
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
865 /*the compiler does have special inlining code for these; bytecode inline is just fine */ \ |
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
866 \ |
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
867 do_intrinsic(_fillInStackTrace, java_lang_Throwable, fillInStackTrace_name, void_throwable_signature, F_RNY) \ |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
868 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
869 do_intrinsic(_StringBuilder_void, java_lang_StringBuilder, object_initializer_name, void_method_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
870 do_intrinsic(_StringBuilder_int, java_lang_StringBuilder, object_initializer_name, int_void_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
871 do_intrinsic(_StringBuilder_String, java_lang_StringBuilder, object_initializer_name, string_void_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
872 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
873 do_intrinsic(_StringBuilder_append_char, java_lang_StringBuilder, append_name, char_StringBuilder_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
874 do_intrinsic(_StringBuilder_append_int, java_lang_StringBuilder, append_name, int_StringBuilder_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
875 do_intrinsic(_StringBuilder_append_String, java_lang_StringBuilder, append_name, String_StringBuilder_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
876 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
877 do_intrinsic(_StringBuilder_toString, java_lang_StringBuilder, toString_name, void_string_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
878 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
879 do_intrinsic(_StringBuffer_void, java_lang_StringBuffer, object_initializer_name, void_method_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
880 do_intrinsic(_StringBuffer_int, java_lang_StringBuffer, object_initializer_name, int_void_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
881 do_intrinsic(_StringBuffer_String, java_lang_StringBuffer, object_initializer_name, string_void_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
882 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
883 do_intrinsic(_StringBuffer_append_char, java_lang_StringBuffer, append_name, char_StringBuffer_signature, F_Y) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
884 do_intrinsic(_StringBuffer_append_int, java_lang_StringBuffer, append_name, int_StringBuffer_signature, F_Y) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
885 do_intrinsic(_StringBuffer_append_String, java_lang_StringBuffer, append_name, String_StringBuffer_signature, F_Y) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
886 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
887 do_intrinsic(_StringBuffer_toString, java_lang_StringBuffer, toString_name, void_string_signature, F_Y) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
888 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
889 do_intrinsic(_Integer_toString, java_lang_Integer, toString_name, int_String_signature, F_S) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
890 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
891 do_intrinsic(_String_String, java_lang_String, object_initializer_name, string_void_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
892 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
893 do_intrinsic(_Object_init, java_lang_Object, object_initializer_name, void_method_signature, F_R) \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
894 /* (symbol object_initializer_name defined above) */ \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
895 \ |
1507
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
896 do_intrinsic(_invoke, java_lang_reflect_Method, invoke_name, object_object_array_object_signature, F_R) \ |
856
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
897 /* (symbols invoke_name and invoke_signature defined above) */ \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
898 do_intrinsic(_checkSpreadArgument, java_lang_invoke_MethodHandleNatives, checkSpreadArgument_name, checkSpreadArgument_signature, F_S) \ |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
899 do_name( checkSpreadArgument_name, "checkSpreadArgument") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
900 do_name( checkSpreadArgument_signature, "(Ljava/lang/Object;I)V") \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
901 do_intrinsic(_invokeExact, java_lang_invoke_MethodHandle, invokeExact_name, object_array_object_signature, F_RN) \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
902 do_intrinsic(_invokeGeneric, java_lang_invoke_MethodHandle, invokeGeneric_name, object_array_object_signature, F_RN) \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
903 do_intrinsic(_invokeVarargs, java_lang_invoke_MethodHandle, invokeVarargs_name, object_array_object_signature, F_R) \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
904 do_intrinsic(_invokeDynamic, java_lang_invoke_InvokeDynamic, star_name, object_array_object_signature, F_SN) \ |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
905 \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
906 /* unboxing methods: */ \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
907 do_intrinsic(_booleanValue, java_lang_Boolean, booleanValue_name, void_boolean_signature, F_R) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
908 do_name( booleanValue_name, "booleanValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
909 do_intrinsic(_byteValue, java_lang_Byte, byteValue_name, void_byte_signature, F_R) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
910 do_name( byteValue_name, "byteValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
911 do_intrinsic(_charValue, java_lang_Character, charValue_name, void_char_signature, F_R) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
912 do_name( charValue_name, "charValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
913 do_intrinsic(_shortValue, java_lang_Short, shortValue_name, void_short_signature, F_R) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
914 do_name( shortValue_name, "shortValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
915 do_intrinsic(_intValue, java_lang_Integer, intValue_name, void_int_signature, F_R) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
916 do_name( intValue_name, "intValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
917 do_intrinsic(_longValue, java_lang_Long, longValue_name, void_long_signature, F_R) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
918 do_name( longValue_name, "longValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
919 do_intrinsic(_floatValue, java_lang_Float, floatValue_name, void_float_signature, F_R) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
920 do_name( floatValue_name, "floatValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
921 do_intrinsic(_doubleValue, java_lang_Double, doubleValue_name, void_double_signature, F_R) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
922 do_name( doubleValue_name, "doubleValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
923 \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
924 /* boxing methods: */ \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
925 do_name( valueOf_name, "valueOf") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
926 do_intrinsic(_Boolean_valueOf, java_lang_Boolean, valueOf_name, Boolean_valueOf_signature, F_S) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
927 do_name( Boolean_valueOf_signature, "(Z)Ljava/lang/Boolean;") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
928 do_intrinsic(_Byte_valueOf, java_lang_Byte, valueOf_name, Byte_valueOf_signature, F_S) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
929 do_name( Byte_valueOf_signature, "(B)Ljava/lang/Byte;") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
930 do_intrinsic(_Character_valueOf, java_lang_Character, valueOf_name, Character_valueOf_signature, F_S) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
931 do_name( Character_valueOf_signature, "(C)Ljava/lang/Character;") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
932 do_intrinsic(_Short_valueOf, java_lang_Short, valueOf_name, Short_valueOf_signature, F_S) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
933 do_name( Short_valueOf_signature, "(S)Ljava/lang/Short;") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
934 do_intrinsic(_Integer_valueOf, java_lang_Integer, valueOf_name, Integer_valueOf_signature, F_S) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
935 do_name( Integer_valueOf_signature, "(I)Ljava/lang/Integer;") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
936 do_intrinsic(_Long_valueOf, java_lang_Long, valueOf_name, Long_valueOf_signature, F_S) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
937 do_name( Long_valueOf_signature, "(J)Ljava/lang/Long;") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
938 do_intrinsic(_Float_valueOf, java_lang_Float, valueOf_name, Float_valueOf_signature, F_S) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
939 do_name( Float_valueOf_signature, "(F)Ljava/lang/Float;") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
940 do_intrinsic(_Double_valueOf, java_lang_Double, valueOf_name, Double_valueOf_signature, F_S) \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
941 do_name( Double_valueOf_signature, "(D)Ljava/lang/Double;") \ |
856
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
942 \ |
0 | 943 /*end*/ |
944 | |
945 | |
946 | |
856
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
947 |
0 | 948 // Class vmSymbols |
949 | |
950 class vmSymbols: AllStatic { | |
951 friend class vmIntrinsics; | |
952 public: | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
953 // enum for figuring positions and size of array holding Symbol*s |
0 | 954 enum SID { |
955 NO_SID = 0, | |
956 | |
957 #define VM_SYMBOL_ENUM(name, string) VM_SYMBOL_ENUM_NAME(name), | |
958 VM_SYMBOLS_DO(VM_SYMBOL_ENUM, VM_ALIAS_IGNORE) | |
959 #undef VM_SYMBOL_ENUM | |
960 | |
961 SID_LIMIT, | |
962 | |
963 #define VM_ALIAS_ENUM(name, def) VM_SYMBOL_ENUM_NAME(name) = VM_SYMBOL_ENUM_NAME(def), | |
964 VM_SYMBOLS_DO(VM_SYMBOL_IGNORE, VM_ALIAS_ENUM) | |
965 #undef VM_ALIAS_ENUM | |
966 | |
967 FIRST_SID = NO_SID + 1 | |
968 }; | |
969 enum { | |
970 log2_SID_LIMIT = 10 // checked by an assert at start-up | |
971 }; | |
972 | |
973 private: | |
974 // The symbol array | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
975 static Symbol* _symbols[]; |
0 | 976 |
977 // Field signatures indexed by BasicType. | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
978 static Symbol* _type_signatures[T_VOID+1]; |
0 | 979 |
980 public: | |
981 // Initialization | |
982 static void initialize(TRAPS); | |
983 // Accessing | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
984 #define VM_SYMBOL_DECLARE(name, ignore) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
985 static Symbol* name() { \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
986 return _symbols[VM_SYMBOL_ENUM_NAME(name)]; \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
987 } |
0 | 988 VM_SYMBOLS_DO(VM_SYMBOL_DECLARE, VM_SYMBOL_DECLARE) |
989 #undef VM_SYMBOL_DECLARE | |
990 | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
991 // Sharing support |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
992 static void symbols_do(SymbolClosure* f); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
993 static void serialize(SerializeOopClosure* soc); |
0 | 994 |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
995 static Symbol* type_signature(BasicType t) { |
0 | 996 assert((uint)t < T_VOID+1, "range check"); |
997 assert(_type_signatures[t] != NULL, "domain check"); | |
998 return _type_signatures[t]; | |
999 } | |
1000 // inverse of type_signature; returns T_OBJECT if s is not recognized | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1001 static BasicType signature_type(Symbol* s); |
0 | 1002 |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1003 static Symbol* symbol_at(SID id) { |
0 | 1004 assert(id >= FIRST_SID && id < SID_LIMIT, "oob"); |
1005 assert(_symbols[id] != NULL, "init"); | |
1006 return _symbols[id]; | |
1007 } | |
1008 | |
1009 // Returns symbol's SID if one is assigned, else NO_SID. | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1010 static SID find_sid(Symbol* symbol); |
2356
72dee110246f
6839872: remove implementation inheritance from JSR 292 APIs
jrose
parents:
2202
diff
changeset
|
1011 static SID find_sid(const char* symbol_name); |
0 | 1012 |
1013 #ifndef PRODUCT | |
1014 // No need for this in the product: | |
1015 static const char* name_for(SID sid); | |
1016 #endif //PRODUCT | |
1017 }; | |
1018 | |
1019 // VM Intrinsic ID's uniquely identify some very special methods | |
1020 class vmIntrinsics: AllStatic { | |
1021 friend class vmSymbols; | |
1022 friend class ciObjectFactory; | |
1023 | |
1024 public: | |
1025 // Accessing | |
1026 enum ID { | |
1027 _none = 0, // not an intrinsic (default answer) | |
1028 | |
1029 #define VM_INTRINSIC_ENUM(id, klass, name, sig, flags) id, | |
1030 VM_INTRINSICS_DO(VM_INTRINSIC_ENUM, | |
1031 VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) | |
1032 #undef VM_INTRINSIC_ENUM | |
1033 | |
1034 ID_LIMIT, | |
856
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
1035 LAST_COMPILER_INLINE = _prefetchWriteStatic, |
0 | 1036 FIRST_ID = _none + 1 |
1037 }; | |
1038 | |
1039 enum Flags { | |
1040 // AccessFlags syndromes relevant to intrinsics. | |
1041 F_none = 0, | |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1042 F_R, // !static ?native !synchronized (R="regular") |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1043 F_S, // static ?native !synchronized |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1044 F_Y, // !static ?native synchronized |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1045 F_RN, // !static native !synchronized |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1046 F_SN, // static native !synchronized |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1047 F_RNY, // !static native synchronized |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1048 |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1049 FLAG_LIMIT |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1050 }; |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1051 enum { |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1052 log2_FLAG_LIMIT = 4 // checked by an assert at start-up |
0 | 1053 }; |
1054 | |
1055 public: | |
1056 static ID ID_from(int raw_id) { | |
1057 assert(raw_id >= (int)_none && raw_id < (int)ID_LIMIT, | |
1058 "must be a valid intrinsic ID"); | |
1059 return (ID)raw_id; | |
1060 } | |
1061 | |
1062 static const char* name_at(ID id); | |
1063 | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1064 private: |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1065 static ID find_id_impl(vmSymbols::SID holder, |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1066 vmSymbols::SID name, |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1067 vmSymbols::SID sig, |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1068 jshort flags); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1069 |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1070 public: |
0 | 1071 // Given a method's class, name, signature, and access flags, report its ID. |
1072 static ID find_id(vmSymbols::SID holder, | |
1073 vmSymbols::SID name, | |
1074 vmSymbols::SID sig, | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1075 jshort flags) { |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1076 ID id = find_id_impl(holder, name, sig, flags); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1077 #ifdef ASSERT |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1078 // ID _none does not hold the following asserts. |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1079 if (id == _none) return id; |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1080 #endif |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1081 assert( class_for(id) == holder, "correct id"); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1082 assert( name_for(id) == name, "correct id"); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1083 assert(signature_for(id) == sig, "correct id"); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1084 return id; |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1085 } |
0 | 1086 |
1087 static void verify_method(ID actual_id, methodOop m) PRODUCT_RETURN; | |
1088 | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1089 // Find out the symbols behind an intrinsic: |
0 | 1090 static vmSymbols::SID class_for(ID id); |
1091 static vmSymbols::SID name_for(ID id); | |
1092 static vmSymbols::SID signature_for(ID id); | |
1093 static Flags flags_for(ID id); | |
1094 | |
1095 static const char* short_name_as_C_string(ID id, char* buf, int size); | |
856
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
1096 |
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
1097 // Access to intrinsic methods: |
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
1098 static methodOop method_for(ID id); |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1099 |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1100 // Wrapper object methods: |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1101 static ID for_boxing(BasicType type); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1102 static ID for_unboxing(BasicType type); |
1138
dd57230ba8fe
6893268: additional dynamic language related optimizations in C2
twisti
parents:
1135
diff
changeset
|
1103 |
dd57230ba8fe
6893268: additional dynamic language related optimizations in C2
twisti
parents:
1135
diff
changeset
|
1104 // Raw conversion: |
dd57230ba8fe
6893268: additional dynamic language related optimizations in C2
twisti
parents:
1135
diff
changeset
|
1105 static ID for_raw_conversion(BasicType src, BasicType dest); |
0 | 1106 }; |
1972 | 1107 |
1108 #endif // SHARE_VM_CLASSFILE_VMSYMBOLS_HPP |