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