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