Mercurial > hg > truffle
annotate src/share/vm/classfile/vmSymbols.hpp @ 3249:e1162778c1c8
7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
Summary: A referent object that is only weakly reachable at the start of concurrent marking but is re-attached to the strongly reachable object graph during marking may not be marked as live. This can cause the reference object to be processed prematurely and leave dangling pointers to the referent object. Implement a read barrier for the java.lang.ref.Reference::referent field by intrinsifying the Reference.get() method, and intercepting accesses though JNI, reflection, and Unsafe, so that when a non-null referent object is read it is also logged in an SATB buffer.
Reviewed-by: kvn, iveresov, never, tonyp, dholmes
author | johnc |
---|---|
date | Thu, 07 Apr 2011 09:53:20 -0700 |
parents | 8033953d67ff |
children | 5d046bf49ce7 |
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 /* temporary transitional public names from 6839872: */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
249 template(java_dyn_InvokeDynamic, "java/dyn/InvokeDynamic") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
250 template(java_dyn_Linkage, "java/dyn/Linkage") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
251 template(java_dyn_CallSite, "java/dyn/CallSite") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
252 template(java_dyn_MethodHandle, "java/dyn/MethodHandle") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
253 template(java_dyn_MethodType, "java/dyn/MethodType") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
254 template(java_dyn_WrongMethodTypeException, "java/dyn/WrongMethodTypeException") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
255 template(java_dyn_MethodType_signature, "Ljava/dyn/MethodType;") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
256 template(java_dyn_MethodHandle_signature, "Ljava/dyn/MethodHandle;") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
257 /* temporary transitional internal names from 6839872: */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
258 template(java_dyn_MethodTypeForm, "java/dyn/MethodTypeForm") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
259 template(java_dyn_MethodTypeForm_signature, "Ljava/dyn/MethodTypeForm;") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
260 template(java_dyn_MemberName, "java/dyn/MemberName") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
261 template(java_dyn_MethodHandleNatives, "java/dyn/MethodHandleNatives") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
262 template(java_dyn_AdapterMethodHandle, "java/dyn/AdapterMethodHandle") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
263 template(java_dyn_BoundMethodHandle, "java/dyn/BoundMethodHandle") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
264 template(java_dyn_DirectMethodHandle, "java/dyn/DirectMethodHandle") /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
265 /* temporary transitional internal names from EDR: */ \ |
2356
72dee110246f
6839872: remove implementation inheritance from JSR 292 APIs
jrose
parents:
2202
diff
changeset
|
266 template(sun_dyn_MemberName, "sun/dyn/MemberName") /* AllowTransitionalJSR292 ONLY */ \ |
72dee110246f
6839872: remove implementation inheritance from JSR 292 APIs
jrose
parents:
2202
diff
changeset
|
267 template(sun_dyn_MethodHandleImpl, "sun/dyn/MethodHandleImpl") /* AllowTransitionalJSR292 ONLY */ \ |
72dee110246f
6839872: remove implementation inheritance from JSR 292 APIs
jrose
parents:
2202
diff
changeset
|
268 template(sun_dyn_MethodHandleNatives, "sun/dyn/MethodHandleNatives") /* AllowTransitionalJSR292 ONLY */ \ |
72dee110246f
6839872: remove implementation inheritance from JSR 292 APIs
jrose
parents:
2202
diff
changeset
|
269 template(sun_dyn_AdapterMethodHandle, "sun/dyn/AdapterMethodHandle") /* AllowTransitionalJSR292 ONLY */ \ |
72dee110246f
6839872: remove implementation inheritance from JSR 292 APIs
jrose
parents:
2202
diff
changeset
|
270 template(sun_dyn_BoundMethodHandle, "sun/dyn/BoundMethodHandle") /* AllowTransitionalJSR292 ONLY */ \ |
72dee110246f
6839872: remove implementation inheritance from JSR 292 APIs
jrose
parents:
2202
diff
changeset
|
271 template(sun_dyn_DirectMethodHandle, "sun/dyn/DirectMethodHandle") /* AllowTransitionalJSR292 ONLY */ \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
272 /* 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
|
273 template(findMethodHandleType_name, "findMethodHandleType") \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
274 template(findMethodHandleType_signature, "(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
275 template(findMethodHandleType_TRANS_signature, "(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/dyn/MethodType;") /* AllowTransitionalJSR292 ONLY */ \ |
1793
d257356e35f0
6939224: MethodHandle.invokeGeneric needs to perform the correct set of conversions
jrose
parents:
1602
diff
changeset
|
276 template(notifyGenericMethodType_name, "notifyGenericMethodType") \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
277 template(notifyGenericMethodType_signature, "(Ljava/lang/invoke/MethodType;)V") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
278 template(notifyGenericMethodType_TRANS_signature, "(Ljava/dyn/MethodType;)V") /* AllowTransitionalJSR292 ONLY */ \ |
1602 | 279 template(linkMethodHandleConstant_name, "linkMethodHandleConstant") \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
280 template(linkMethodHandleConstant_signature, "(Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle;") \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
281 template(linkMethodHandleConstant_TRANS_signature, "(Ljava/lang/Class;ILjava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Ljava/dyn/MethodHandle;") /* AllowTransitionalJSR292 ONLY */ \ |
1507
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
282 template(makeDynamicCallSite_name, "makeDynamicCallSite") \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
283 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;") \ |
2356
72dee110246f
6839872: remove implementation inheritance from JSR 292 APIs
jrose
parents:
2202
diff
changeset
|
284 template(makeDynamicCallSite_TRANS_signature, "(Ljava/dyn/MethodHandle;Ljava/lang/String;Ljava/dyn/MethodType;Ljava/lang/Object;Lsun/dyn/MemberName;I)Ljava/dyn/CallSite;") /* AllowTransitionalJSR292 ONLY */ \ |
2357
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
285 template(makeDynamicCallSite_TRANS2_signature, "(Ljava/dyn/MethodHandle;Ljava/lang/String;Ljava/dyn/MethodType;Ljava/lang/Object;Ljava/dyn/MemberName;I)Ljava/dyn/CallSite;") /* AllowTransitionalJSR292 ONLY */ \ |
710 | 286 NOT_LP64( do_alias(machine_word_signature, int_signature) ) \ |
287 LP64_ONLY( do_alias(machine_word_signature, long_signature) ) \ | |
288 \ | |
289 /* common method and field names */ \ | |
0 | 290 template(object_initializer_name, "<init>") \ |
291 template(class_initializer_name, "<clinit>") \ | |
292 template(println_name, "println") \ | |
293 template(printStackTrace_name, "printStackTrace") \ | |
294 template(main_name, "main") \ | |
295 template(name_name, "name") \ | |
296 template(priority_name, "priority") \ | |
297 template(stillborn_name, "stillborn") \ | |
298 template(group_name, "group") \ | |
299 template(daemon_name, "daemon") \ | |
300 template(eetop_name, "eetop") \ | |
301 template(thread_status_name, "threadStatus") \ | |
302 template(run_method_name, "run") \ | |
303 template(exit_method_name, "exit") \ | |
304 template(add_method_name, "add") \ | |
305 template(parent_name, "parent") \ | |
306 template(threads_name, "threads") \ | |
307 template(groups_name, "groups") \ | |
308 template(maxPriority_name, "maxPriority") \ | |
309 template(destroyed_name, "destroyed") \ | |
310 template(vmAllowSuspension_name, "vmAllowSuspension") \ | |
311 template(nthreads_name, "nthreads") \ | |
312 template(ngroups_name, "ngroups") \ | |
313 template(shutdown_method_name, "shutdown") \ | |
314 template(finalize_method_name, "finalize") \ | |
315 template(reference_lock_name, "lock") \ | |
316 template(reference_discovered_name, "discovered") \ | |
317 template(run_finalizers_on_exit_name, "runFinalizersOnExit") \ | |
318 template(uncaughtException_name, "uncaughtException") \ | |
319 template(dispatchUncaughtException_name, "dispatchUncaughtException") \ | |
320 template(initializeSystemClass_name, "initializeSystemClass") \ | |
321 template(loadClass_name, "loadClass") \ | |
322 template(loadClassInternal_name, "loadClassInternal") \ | |
323 template(get_name, "get") \ | |
324 template(put_name, "put") \ | |
325 template(type_name, "type") \ | |
326 template(findNative_name, "findNative") \ | |
327 template(deadChild_name, "deadChild") \ | |
328 template(addClass_name, "addClass") \ | |
329 template(getFromClass_name, "getFromClass") \ | |
330 template(dispatch_name, "dispatch") \ | |
331 template(getSystemClassLoader_name, "getSystemClassLoader") \ | |
332 template(fillInStackTrace_name, "fillInStackTrace") \ | |
333 template(getCause_name, "getCause") \ | |
334 template(initCause_name, "initCause") \ | |
335 template(setProperty_name, "setProperty") \ | |
336 template(getProperty_name, "getProperty") \ | |
337 template(context_name, "context") \ | |
338 template(privilegedContext_name, "privilegedContext") \ | |
339 template(contextClassLoader_name, "contextClassLoader") \ | |
340 template(inheritedAccessControlContext_name, "inheritedAccessControlContext") \ | |
341 template(isPrivileged_name, "isPrivileged") \ | |
342 template(wait_name, "wait") \ | |
343 template(checkPackageAccess_name, "checkPackageAccess") \ | |
344 template(stackSize_name, "stackSize") \ | |
345 template(thread_id_name, "tid") \ | |
346 template(newInstance0_name, "newInstance0") \ | |
347 template(limit_name, "limit") \ | |
348 template(forName_name, "forName") \ | |
349 template(forName0_name, "forName0") \ | |
350 template(isJavaIdentifierStart_name, "isJavaIdentifierStart") \ | |
351 template(isJavaIdentifierPart_name, "isJavaIdentifierPart") \ | |
352 template(exclusive_owner_thread_name, "exclusiveOwnerThread") \ | |
353 template(park_blocker_name, "parkBlocker") \ | |
354 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
|
355 template(cache_field_name, "cache") \ |
0 | 356 template(value_name, "value") \ |
18
c7d713375c94
6621621: HashMap front cache should be enabled only with AggressiveOpts
phh
parents:
17
diff
changeset
|
357 template(frontCacheEnabled_name, "frontCacheEnabled") \ |
192
6d13fcb3663f
6714404: Add UseStringCache switch to enable String caching under AggressiveOpts
kvn
parents:
169
diff
changeset
|
358 template(stringCacheEnabled_name, "stringCacheEnabled") \ |
775
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
359 template(numberOfLeadingZeros_name, "numberOfLeadingZeros") \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
360 template(numberOfTrailingZeros_name, "numberOfTrailingZeros") \ |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
361 template(bitCount_name, "bitCount") \ |
675 | 362 template(profile_name, "profile") \ |
681 | 363 template(equals_name, "equals") \ |
726
be93aad57795
6655646: dynamic languages need dynamically linked call sites
jrose
parents:
710
diff
changeset
|
364 template(target_name, "target") \ |
710 | 365 template(toString_name, "toString") \ |
366 template(values_name, "values") \ | |
367 template(receiver_name, "receiver") \ | |
726
be93aad57795
6655646: dynamic languages need dynamically linked call sites
jrose
parents:
710
diff
changeset
|
368 template(vmmethod_name, "vmmethod") \ |
710 | 369 template(vmtarget_name, "vmtarget") \ |
370 template(vmentry_name, "vmentry") \ | |
371 template(vmslots_name, "vmslots") \ | |
372 template(vmindex_name, "vmindex") \ | |
373 template(vmargslot_name, "vmargslot") \ | |
374 template(flags_name, "flags") \ | |
375 template(argument_name, "argument") \ | |
376 template(conversion_name, "conversion") \ | |
377 template(rtype_name, "rtype") \ | |
378 template(ptypes_name, "ptypes") \ | |
379 template(form_name, "form") \ | |
380 template(erasedType_name, "erasedType") \ | |
1793
d257356e35f0
6939224: MethodHandle.invokeGeneric needs to perform the correct set of conversions
jrose
parents:
1602
diff
changeset
|
381 template(genericInvoker_name, "genericInvoker") \ |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
382 template(append_name, "append") \ |
0 | 383 \ |
384 /* non-intrinsic name/signature pairs: */ \ | |
385 template(register_method_name, "register") \ | |
386 do_alias(register_method_signature, object_void_signature) \ | |
387 \ | |
388 /* name symbols needed by intrinsics */ \ | |
389 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, template, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) \ | |
390 \ | |
391 /* common signatures names */ \ | |
392 template(void_method_signature, "()V") \ | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
393 template(void_boolean_signature, "()Z") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
394 template(void_byte_signature, "()B") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
395 template(void_char_signature, "()C") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
396 template(void_short_signature, "()S") \ |
0 | 397 template(void_int_signature, "()I") \ |
398 template(void_long_signature, "()J") \ | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
399 template(void_float_signature, "()F") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
400 template(void_double_signature, "()D") \ |
0 | 401 template(int_void_signature, "(I)V") \ |
402 template(int_int_signature, "(I)I") \ | |
1396
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
403 template(char_char_signature, "(C)C") \ |
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
404 template(short_short_signature, "(S)S") \ |
0 | 405 template(int_bool_signature, "(I)Z") \ |
406 template(float_int_signature, "(F)I") \ | |
407 template(double_long_signature, "(D)J") \ | |
408 template(double_double_signature, "(D)D") \ | |
409 template(int_float_signature, "(I)F") \ | |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
410 template(long_int_signature, "(J)I") \ |
0 | 411 template(long_long_signature, "(J)J") \ |
412 template(long_double_signature, "(J)D") \ | |
413 template(byte_signature, "B") \ | |
414 template(char_signature, "C") \ | |
415 template(double_signature, "D") \ | |
416 template(float_signature, "F") \ | |
417 template(int_signature, "I") \ | |
418 template(long_signature, "J") \ | |
419 template(short_signature, "S") \ | |
420 template(bool_signature, "Z") \ | |
421 template(void_signature, "V") \ | |
422 template(byte_array_signature, "[B") \ | |
423 template(char_array_signature, "[C") \ | |
424 template(object_void_signature, "(Ljava/lang/Object;)V") \ | |
425 template(object_int_signature, "(Ljava/lang/Object;)I") \ | |
426 template(object_boolean_signature, "(Ljava/lang/Object;)Z") \ | |
427 template(string_void_signature, "(Ljava/lang/String;)V") \ | |
428 template(string_int_signature, "(Ljava/lang/String;)I") \ | |
429 template(throwable_void_signature, "(Ljava/lang/Throwable;)V") \ | |
430 template(void_throwable_signature, "()Ljava/lang/Throwable;") \ | |
431 template(throwable_throwable_signature, "(Ljava/lang/Throwable;)Ljava/lang/Throwable;") \ | |
432 template(class_void_signature, "(Ljava/lang/Class;)V") \ | |
433 template(class_int_signature, "(Ljava/lang/Class;)I") \ | |
434 template(class_boolean_signature, "(Ljava/lang/Class;)Z") \ | |
435 template(throwable_string_void_signature, "(Ljava/lang/Throwable;Ljava/lang/String;)V") \ | |
436 template(string_array_void_signature, "([Ljava/lang/String;)V") \ | |
437 template(string_array_string_array_void_signature, "([Ljava/lang/String;[Ljava/lang/String;)V") \ | |
438 template(thread_throwable_void_signature, "(Ljava/lang/Thread;Ljava/lang/Throwable;)V") \ | |
439 template(thread_void_signature, "(Ljava/lang/Thread;)V") \ | |
440 template(threadgroup_runnable_void_signature, "(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;)V") \ | |
441 template(threadgroup_string_void_signature, "(Ljava/lang/ThreadGroup;Ljava/lang/String;)V") \ | |
442 template(string_class_signature, "(Ljava/lang/String;)Ljava/lang/Class;") \ | |
443 template(object_object_object_signature, "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;") \ | |
444 template(string_string_string_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;") \ | |
445 template(string_string_signature, "(Ljava/lang/String;)Ljava/lang/String;") \ | |
446 template(classloader_string_long_signature, "(Ljava/lang/ClassLoader;Ljava/lang/String;)J") \ | |
447 template(byte_array_void_signature, "([B)V") \ | |
448 template(char_array_void_signature, "([C)V") \ | |
449 template(int_int_void_signature, "(II)V") \ | |
450 template(long_long_void_signature, "(JJ)V") \ | |
451 template(void_classloader_signature, "()Ljava/lang/ClassLoader;") \ | |
452 template(void_object_signature, "()Ljava/lang/Object;") \ | |
453 template(void_class_signature, "()Ljava/lang/Class;") \ | |
1507
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
454 template(void_string_signature, "()Ljava/lang/String;") \ |
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
455 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
|
456 template(object_object_array_object_signature, "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;")\ |
0 | 457 template(exception_void_signature, "(Ljava/lang/Exception;)V") \ |
458 template(protectiondomain_signature, "[Ljava/security/ProtectionDomain;") \ | |
459 template(accesscontrolcontext_signature, "Ljava/security/AccessControlContext;") \ | |
460 template(class_protectiondomain_signature, "(Ljava/lang/Class;Ljava/security/ProtectionDomain;)V") \ | |
461 template(thread_signature, "Ljava/lang/Thread;") \ | |
462 template(thread_array_signature, "[Ljava/lang/Thread;") \ | |
463 template(threadgroup_signature, "Ljava/lang/ThreadGroup;") \ | |
464 template(threadgroup_array_signature, "[Ljava/lang/ThreadGroup;") \ | |
465 template(class_array_signature, "[Ljava/lang/Class;") \ | |
466 template(classloader_signature, "Ljava/lang/ClassLoader;") \ | |
467 template(object_signature, "Ljava/lang/Object;") \ | |
468 template(class_signature, "Ljava/lang/Class;") \ | |
469 template(string_signature, "Ljava/lang/String;") \ | |
470 template(reference_signature, "Ljava/lang/ref/Reference;") \ | |
514 | 471 template(concurrenthashmap_signature, "Ljava/util/concurrent/ConcurrentHashMap;") \ |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
472 template(String_StringBuilder_signature, "(Ljava/lang/String;)Ljava/lang/StringBuilder;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
473 template(int_StringBuilder_signature, "(I)Ljava/lang/StringBuilder;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
474 template(char_StringBuilder_signature, "(C)Ljava/lang/StringBuilder;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
475 template(String_StringBuffer_signature, "(Ljava/lang/String;)Ljava/lang/StringBuffer;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
476 template(int_StringBuffer_signature, "(I)Ljava/lang/StringBuffer;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
477 template(char_StringBuffer_signature, "(C)Ljava/lang/StringBuffer;") \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
478 template(int_String_signature, "(I)Ljava/lang/String;") \ |
0 | 479 /* signature symbols needed by intrinsics */ \ |
480 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, template, VM_ALIAS_IGNORE) \ | |
481 \ | |
482 /* symbol aliases needed by intrinsics */ \ | |
483 VM_INTRINSICS_DO(VM_INTRINSIC_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, do_alias) \ | |
484 \ | |
485 /* 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
|
486 template(dummy_symbol, "illegal symbol") \ |
0 | 487 \ |
488 /* used by ClassFormatError when class name is not known yet */ \ | |
489 template(unknown_class_name, "<Unknown>") \ | |
490 \ | |
514 | 491 /* 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
|
492 template(parallelCapable_name, "parallelLockMap") \ |
514 | 493 \ |
0 | 494 /* JVM monitoring and management support */ \ |
495 template(java_lang_StackTraceElement_array, "[Ljava/lang/StackTraceElement;") \ | |
496 template(java_lang_management_ThreadState, "java/lang/management/ThreadState") \ | |
497 template(java_lang_management_MemoryUsage, "java/lang/management/MemoryUsage") \ | |
498 template(java_lang_management_ThreadInfo, "java/lang/management/ThreadInfo") \ | |
499 template(sun_management_ManagementFactory, "sun/management/ManagementFactory") \ | |
500 template(sun_management_Sensor, "sun/management/Sensor") \ | |
501 template(sun_management_Agent, "sun/management/Agent") \ | |
502 template(createMemoryPoolMBean_name, "createMemoryPoolMBean") \ | |
503 template(createMemoryManagerMBean_name, "createMemoryManagerMBean") \ | |
504 template(createGarbageCollectorMBean_name, "createGarbageCollectorMBean") \ | |
505 template(createMemoryPoolMBean_signature, "(Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMBean;") \ | |
506 template(createMemoryManagerMBean_signature, "(Ljava/lang/String;)Ljava/lang/management/MemoryManagerMBean;") \ | |
507 template(createGarbageCollectorMBean_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMBean;") \ | |
508 template(trigger_name, "trigger") \ | |
509 template(clear_name, "clear") \ | |
510 template(trigger_method_signature, "(ILjava/lang/management/MemoryUsage;)V") \ | |
511 template(startAgent_name, "startAgent") \ | |
512 template(java_lang_management_ThreadInfo_constructor_signature, "(Ljava/lang/Thread;ILjava/lang/Object;Ljava/lang/Thread;JJJJ[Ljava/lang/StackTraceElement;)V") \ | |
513 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") \ | |
514 template(long_long_long_long_void_signature, "(JJJJ)V") \ | |
515 \ | |
516 template(java_lang_management_MemoryPoolMXBean, "java/lang/management/MemoryPoolMXBean") \ | |
517 template(java_lang_management_MemoryManagerMXBean, "java/lang/management/MemoryManagerMXBean") \ | |
518 template(java_lang_management_GarbageCollectorMXBean,"java/lang/management/GarbageCollectorMXBean") \ | |
519 template(createMemoryPool_name, "createMemoryPool") \ | |
520 template(createMemoryManager_name, "createMemoryManager") \ | |
521 template(createGarbageCollector_name, "createGarbageCollector") \ | |
522 template(createMemoryPool_signature, "(Ljava/lang/String;ZJJ)Ljava/lang/management/MemoryPoolMXBean;") \ | |
523 template(createMemoryManager_signature, "(Ljava/lang/String;)Ljava/lang/management/MemoryManagerMXBean;") \ | |
524 template(createGarbageCollector_signature, "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/management/GarbageCollectorMXBean;") \ | |
525 template(addThreadDumpForMonitors_name, "addThreadDumpForMonitors") \ | |
526 template(addThreadDumpForSynchronizers_name, "addThreadDumpForSynchronizers") \ | |
527 template(addThreadDumpForMonitors_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;[I)V") \ | |
528 template(addThreadDumpForSynchronizers_signature, "(Ljava/lang/management/ThreadInfo;[Ljava/lang/Object;)V") \ | |
529 \ | |
530 /* JVMTI/java.lang.instrument support and VM Attach mechanism */ \ | |
531 template(sun_misc_VMSupport, "sun/misc/VMSupport") \ | |
532 template(appendToClassPathForInstrumentation_name, "appendToClassPathForInstrumentation") \ | |
533 do_alias(appendToClassPathForInstrumentation_signature, string_void_signature) \ | |
534 template(serializePropertiesToByteArray_name, "serializePropertiesToByteArray") \ | |
535 template(serializePropertiesToByteArray_signature, "()[B") \ | |
536 template(serializeAgentPropertiesToByteArray_name, "serializeAgentPropertiesToByteArray") \ | |
537 template(classRedefinedCount_name, "classRedefinedCount") \ | |
538 /*end*/ | |
539 | |
540 | |
541 | |
542 // Here are all the intrinsics known to the runtime and the CI. | |
543 // Each intrinsic consists of a public enum name (like _hashCode), | |
544 // followed by a specification of its klass, name, and signature: | |
545 // template(<id>, <klass>, <name>, <sig>, <FCODE>) | |
546 // | |
547 // If you add an intrinsic here, you must also define its name | |
548 // and signature as members of the VM symbols. The VM symbols for | |
549 // the intrinsic name and signature may be defined above. | |
550 // | |
551 // Because the VM_SYMBOLS_DO macro makes reference to VM_INTRINSICS_DO, | |
552 // you can also define an intrinsic's name and/or signature locally to the | |
553 // intrinsic, if this makes sense. (It often does make sense.) | |
554 // | |
555 // For example: | |
556 // do_intrinsic(_foo, java_lang_Object, foo_name, foo_signature, F_xx) | |
557 // do_name( foo_name, "foo") | |
558 // do_signature(foo_signature, "()F") | |
559 // klass = vmSymbols::java_lang_Object() | |
560 // name = vmSymbols::foo_name() | |
561 // signature = vmSymbols::foo_signature() | |
562 // | |
563 // The name and/or signature might be a "well known" symbol | |
564 // like "equal" or "()I", in which case there will be no local | |
565 // re-definition of the symbol. | |
566 // | |
567 // The do_class, do_name, and do_signature calls are all used for the | |
568 // same purpose: Define yet another VM symbol. They could all be merged | |
569 // into a common 'do_symbol' call, but it seems useful to record our | |
570 // intentions here about kinds of symbols (class vs. name vs. signature). | |
571 // | |
572 // The F_xx is one of the Flags enum; see below. | |
573 // | |
574 // for Emacs: (let ((c-backslash-column 120) (c-backslash-max-column 120)) (c-backslash-region (point) (point-max) nil t)) | |
575 #define VM_INTRINSICS_DO(do_intrinsic, do_class, do_name, do_signature, do_alias) \ | |
576 do_intrinsic(_hashCode, java_lang_Object, hashCode_name, void_int_signature, F_R) \ | |
577 do_name( hashCode_name, "hashCode") \ | |
578 do_intrinsic(_getClass, java_lang_Object, getClass_name, void_class_signature, F_R) \ | |
579 do_name( getClass_name, "getClass") \ | |
580 do_intrinsic(_clone, java_lang_Object, clone_name, void_object_signature, F_R) \ | |
581 do_name( clone_name, "clone") \ | |
582 \ | |
583 /* Math & StrictMath intrinsics are defined in terms of just a few signatures: */ \ | |
584 do_class(java_lang_Math, "java/lang/Math") \ | |
585 do_class(java_lang_StrictMath, "java/lang/StrictMath") \ | |
586 do_signature(double2_double_signature, "(DD)D") \ | |
587 do_signature(int2_int_signature, "(II)I") \ | |
588 \ | |
589 /* here are the math names, all together: */ \ | |
590 do_name(abs_name,"abs") do_name(sin_name,"sin") do_name(cos_name,"cos") \ | |
591 do_name(tan_name,"tan") do_name(atan2_name,"atan2") do_name(sqrt_name,"sqrt") \ | |
592 do_name(log_name,"log") do_name(log10_name,"log10") do_name(pow_name,"pow") \ | |
593 do_name(exp_name,"exp") do_name(min_name,"min") do_name(max_name,"max") \ | |
594 \ | |
595 do_intrinsic(_dabs, java_lang_Math, abs_name, double_double_signature, F_S) \ | |
596 do_intrinsic(_dsin, java_lang_Math, sin_name, double_double_signature, F_S) \ | |
597 do_intrinsic(_dcos, java_lang_Math, cos_name, double_double_signature, F_S) \ | |
598 do_intrinsic(_dtan, java_lang_Math, tan_name, double_double_signature, F_S) \ | |
599 do_intrinsic(_datan2, java_lang_Math, atan2_name, double2_double_signature, F_S) \ | |
600 do_intrinsic(_dsqrt, java_lang_Math, sqrt_name, double_double_signature, F_S) \ | |
601 do_intrinsic(_dlog, java_lang_Math, log_name, double_double_signature, F_S) \ | |
602 do_intrinsic(_dlog10, java_lang_Math, log10_name, double_double_signature, F_S) \ | |
603 do_intrinsic(_dpow, java_lang_Math, pow_name, double2_double_signature, F_S) \ | |
604 do_intrinsic(_dexp, java_lang_Math, exp_name, double_double_signature, F_S) \ | |
605 do_intrinsic(_min, java_lang_Math, min_name, int2_int_signature, F_S) \ | |
606 do_intrinsic(_max, java_lang_Math, max_name, int2_int_signature, F_S) \ | |
607 \ | |
608 do_intrinsic(_floatToRawIntBits, java_lang_Float, floatToRawIntBits_name, float_int_signature, F_S) \ | |
609 do_name( floatToRawIntBits_name, "floatToRawIntBits") \ | |
610 do_intrinsic(_floatToIntBits, java_lang_Float, floatToIntBits_name, float_int_signature, F_S) \ | |
611 do_name( floatToIntBits_name, "floatToIntBits") \ | |
612 do_intrinsic(_intBitsToFloat, java_lang_Float, intBitsToFloat_name, int_float_signature, F_S) \ | |
613 do_name( intBitsToFloat_name, "intBitsToFloat") \ | |
614 do_intrinsic(_doubleToRawLongBits, java_lang_Double, doubleToRawLongBits_name, double_long_signature, F_S) \ | |
615 do_name( doubleToRawLongBits_name, "doubleToRawLongBits") \ | |
616 do_intrinsic(_doubleToLongBits, java_lang_Double, doubleToLongBits_name, double_long_signature, F_S) \ | |
617 do_name( doubleToLongBits_name, "doubleToLongBits") \ | |
618 do_intrinsic(_longBitsToDouble, java_lang_Double, longBitsToDouble_name, long_double_signature, F_S) \ | |
619 do_name( longBitsToDouble_name, "longBitsToDouble") \ | |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
620 \ |
775
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
621 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
|
622 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
|
623 \ |
93c14e5562c4
6823354: Add intrinsics for {Integer,Long}.{numberOfLeadingZeros,numberOfTrailingZeros}()
twisti
parents:
726
diff
changeset
|
624 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
|
625 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
|
626 \ |
643
c771b7f43bbf
6378821: bitCount() should use POPC on SPARC processors and AMD+10h
twisti
parents:
514
diff
changeset
|
627 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
|
628 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
|
629 \ |
0 | 630 do_intrinsic(_reverseBytes_i, java_lang_Integer, reverseBytes_name, int_int_signature, F_S) \ |
631 do_name( reverseBytes_name, "reverseBytes") \ | |
632 do_intrinsic(_reverseBytes_l, java_lang_Long, reverseBytes_name, long_long_signature, F_S) \ | |
633 /* (symbol reverseBytes_name defined above) */ \ | |
1396
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
634 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
|
635 /* (symbol reverseBytes_name defined above) */ \ |
d7f654633cfe
6946040: add intrinsic for short and char reverseBytes
never
parents:
1144
diff
changeset
|
636 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
|
637 /* (symbol reverseBytes_name defined above) */ \ |
0 | 638 \ |
639 do_intrinsic(_identityHashCode, java_lang_System, identityHashCode_name, object_int_signature, F_S) \ | |
640 do_name( identityHashCode_name, "identityHashCode") \ | |
641 do_intrinsic(_currentTimeMillis, java_lang_System, currentTimeMillis_name, void_long_signature, F_S) \ | |
642 \ | |
643 do_name( currentTimeMillis_name, "currentTimeMillis") \ | |
644 do_intrinsic(_nanoTime, java_lang_System, nanoTime_name, void_long_signature, F_S) \ | |
645 do_name( nanoTime_name, "nanoTime") \ | |
646 \ | |
647 do_intrinsic(_arraycopy, java_lang_System, arraycopy_name, arraycopy_signature, F_S) \ | |
648 do_name( arraycopy_name, "arraycopy") \ | |
649 do_signature(arraycopy_signature, "(Ljava/lang/Object;ILjava/lang/Object;II)V") \ | |
650 do_intrinsic(_isInterrupted, java_lang_Thread, isInterrupted_name, isInterrupted_signature, F_R) \ | |
651 do_name( isInterrupted_name, "isInterrupted") \ | |
652 do_signature(isInterrupted_signature, "(Z)Z") \ | |
653 do_intrinsic(_currentThread, java_lang_Thread, currentThread_name, currentThread_signature, F_S) \ | |
654 do_name( currentThread_name, "currentThread") \ | |
655 do_signature(currentThread_signature, "()Ljava/lang/Thread;") \ | |
656 \ | |
657 /* reflective intrinsics, for java/lang/Class, etc. */ \ | |
658 do_intrinsic(_isAssignableFrom, java_lang_Class, isAssignableFrom_name, class_boolean_signature, F_RN) \ | |
659 do_name( isAssignableFrom_name, "isAssignableFrom") \ | |
660 do_intrinsic(_isInstance, java_lang_Class, isInstance_name, object_boolean_signature, F_RN) \ | |
661 do_name( isInstance_name, "isInstance") \ | |
662 do_intrinsic(_getModifiers, java_lang_Class, getModifiers_name, void_int_signature, F_RN) \ | |
663 do_name( getModifiers_name, "getModifiers") \ | |
664 do_intrinsic(_isInterface, java_lang_Class, isInterface_name, void_boolean_signature, F_RN) \ | |
665 do_name( isInterface_name, "isInterface") \ | |
666 do_intrinsic(_isArray, java_lang_Class, isArray_name, void_boolean_signature, F_RN) \ | |
667 do_name( isArray_name, "isArray") \ | |
668 do_intrinsic(_isPrimitive, java_lang_Class, isPrimitive_name, void_boolean_signature, F_RN) \ | |
669 do_name( isPrimitive_name, "isPrimitive") \ | |
670 do_intrinsic(_getSuperclass, java_lang_Class, getSuperclass_name, void_class_signature, F_RN) \ | |
671 do_name( getSuperclass_name, "getSuperclass") \ | |
672 do_intrinsic(_getComponentType, java_lang_Class, getComponentType_name, void_class_signature, F_RN) \ | |
673 do_name( getComponentType_name, "getComponentType") \ | |
674 \ | |
675 do_intrinsic(_getClassAccessFlags, sun_reflect_Reflection, getClassAccessFlags_name, class_int_signature, F_SN) \ | |
676 do_name( getClassAccessFlags_name, "getClassAccessFlags") \ | |
677 do_intrinsic(_getLength, java_lang_reflect_Array, getLength_name, object_int_signature, F_SN) \ | |
678 do_name( getLength_name, "getLength") \ | |
679 \ | |
680 do_intrinsic(_getCallerClass, sun_reflect_Reflection, getCallerClass_name, getCallerClass_signature, F_SN) \ | |
681 do_name( getCallerClass_name, "getCallerClass") \ | |
682 do_signature(getCallerClass_signature, "(I)Ljava/lang/Class;") \ | |
683 \ | |
684 do_intrinsic(_newArray, java_lang_reflect_Array, newArray_name, newArray_signature, F_SN) \ | |
685 do_name( newArray_name, "newArray") \ | |
686 do_signature(newArray_signature, "(Ljava/lang/Class;I)Ljava/lang/Object;") \ | |
687 \ | |
688 do_intrinsic(_copyOf, java_util_Arrays, copyOf_name, copyOf_signature, F_S) \ | |
689 do_name( copyOf_name, "copyOf") \ | |
690 do_signature(copyOf_signature, "([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;") \ | |
691 \ | |
692 do_intrinsic(_copyOfRange, java_util_Arrays, copyOfRange_name, copyOfRange_signature, F_S) \ | |
693 do_name( copyOfRange_name, "copyOfRange") \ | |
694 do_signature(copyOfRange_signature, "([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;") \ | |
695 \ | |
169
9148c65abefc
6695049: (coll) Create an x86 intrinsic for Arrays.equals
rasbold
parents:
45
diff
changeset
|
696 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
|
697 do_signature(equalsC_signature, "([C[C)Z") \ |
9148c65abefc
6695049: (coll) Create an x86 intrinsic for Arrays.equals
rasbold
parents:
45
diff
changeset
|
698 \ |
0 | 699 do_intrinsic(_compareTo, java_lang_String, compareTo_name, string_int_signature, F_R) \ |
700 do_name( compareTo_name, "compareTo") \ | |
701 do_intrinsic(_indexOf, java_lang_String, indexOf_name, string_int_signature, F_R) \ | |
702 do_name( indexOf_name, "indexOf") \ | |
681 | 703 do_intrinsic(_equals, java_lang_String, equals_name, object_boolean_signature, F_R) \ |
0 | 704 \ |
705 do_class(java_nio_Buffer, "java/nio/Buffer") \ | |
706 do_intrinsic(_checkIndex, java_nio_Buffer, checkIndex_name, int_int_signature, F_R) \ | |
707 do_name( checkIndex_name, "checkIndex") \ | |
708 \ | |
3249
e1162778c1c8
7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
johnc
parents:
2357
diff
changeset
|
709 /* java/lang/ref/Reference */ \ |
e1162778c1c8
7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
johnc
parents:
2357
diff
changeset
|
710 do_intrinsic(_Reference_get, java_lang_ref_Reference, get_name, void_object_signature, F_R) \ |
e1162778c1c8
7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
johnc
parents:
2357
diff
changeset
|
711 \ |
e1162778c1c8
7009266: G1: assert(obj->is_oop_or_null(true )) failed: Error
johnc
parents:
2357
diff
changeset
|
712 \ |
0 | 713 do_class(sun_misc_AtomicLongCSImpl, "sun/misc/AtomicLongCSImpl") \ |
714 do_intrinsic(_get_AtomicLong, sun_misc_AtomicLongCSImpl, get_name, void_long_signature, F_R) \ | |
715 /* (symbols get_name and void_long_signature defined above) */ \ | |
716 \ | |
717 do_intrinsic(_attemptUpdate, sun_misc_AtomicLongCSImpl, attemptUpdate_name, attemptUpdate_signature, F_R) \ | |
718 do_name( attemptUpdate_name, "attemptUpdate") \ | |
719 do_signature(attemptUpdate_signature, "(JJ)Z") \ | |
720 \ | |
721 /* support for sun.misc.Unsafe */ \ | |
722 do_class(sun_misc_Unsafe, "sun/misc/Unsafe") \ | |
723 \ | |
724 do_intrinsic(_allocateInstance, sun_misc_Unsafe, allocateInstance_name, allocateInstance_signature, F_RN) \ | |
725 do_name( allocateInstance_name, "allocateInstance") \ | |
726 do_signature(allocateInstance_signature, "(Ljava/lang/Class;)Ljava/lang/Object;") \ | |
727 do_intrinsic(_copyMemory, sun_misc_Unsafe, copyMemory_name, copyMemory_signature, F_RN) \ | |
728 do_name( copyMemory_name, "copyMemory") \ | |
729 do_signature(copyMemory_signature, "(Ljava/lang/Object;JLjava/lang/Object;JJ)V") \ | |
730 do_intrinsic(_park, sun_misc_Unsafe, park_name, park_signature, F_RN) \ | |
731 do_name( park_name, "park") \ | |
732 do_signature(park_signature, "(ZJ)V") \ | |
733 do_intrinsic(_unpark, sun_misc_Unsafe, unpark_name, unpark_signature, F_RN) \ | |
734 do_name( unpark_name, "unpark") \ | |
735 do_alias( unpark_signature, /*(LObject;)V*/ object_void_signature) \ | |
736 \ | |
737 /* unsafe memory references (there are a lot of them...) */ \ | |
738 do_signature(getObject_signature, "(Ljava/lang/Object;J)Ljava/lang/Object;") \ | |
739 do_signature(putObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;)V") \ | |
740 do_signature(getBoolean_signature, "(Ljava/lang/Object;J)Z") \ | |
741 do_signature(putBoolean_signature, "(Ljava/lang/Object;JZ)V") \ | |
742 do_signature(getByte_signature, "(Ljava/lang/Object;J)B") \ | |
743 do_signature(putByte_signature, "(Ljava/lang/Object;JB)V") \ | |
744 do_signature(getShort_signature, "(Ljava/lang/Object;J)S") \ | |
745 do_signature(putShort_signature, "(Ljava/lang/Object;JS)V") \ | |
746 do_signature(getChar_signature, "(Ljava/lang/Object;J)C") \ | |
747 do_signature(putChar_signature, "(Ljava/lang/Object;JC)V") \ | |
748 do_signature(getInt_signature, "(Ljava/lang/Object;J)I") \ | |
749 do_signature(putInt_signature, "(Ljava/lang/Object;JI)V") \ | |
750 do_signature(getLong_signature, "(Ljava/lang/Object;J)J") \ | |
751 do_signature(putLong_signature, "(Ljava/lang/Object;JJ)V") \ | |
752 do_signature(getFloat_signature, "(Ljava/lang/Object;J)F") \ | |
753 do_signature(putFloat_signature, "(Ljava/lang/Object;JF)V") \ | |
754 do_signature(getDouble_signature, "(Ljava/lang/Object;J)D") \ | |
755 do_signature(putDouble_signature, "(Ljava/lang/Object;JD)V") \ | |
756 \ | |
757 do_name(getObject_name,"getObject") do_name(putObject_name,"putObject") \ | |
758 do_name(getBoolean_name,"getBoolean") do_name(putBoolean_name,"putBoolean") \ | |
759 do_name(getByte_name,"getByte") do_name(putByte_name,"putByte") \ | |
760 do_name(getShort_name,"getShort") do_name(putShort_name,"putShort") \ | |
761 do_name(getChar_name,"getChar") do_name(putChar_name,"putChar") \ | |
762 do_name(getInt_name,"getInt") do_name(putInt_name,"putInt") \ | |
763 do_name(getLong_name,"getLong") do_name(putLong_name,"putLong") \ | |
764 do_name(getFloat_name,"getFloat") do_name(putFloat_name,"putFloat") \ | |
765 do_name(getDouble_name,"getDouble") do_name(putDouble_name,"putDouble") \ | |
766 \ | |
767 do_intrinsic(_getObject, sun_misc_Unsafe, getObject_name, getObject_signature, F_RN) \ | |
768 do_intrinsic(_getBoolean, sun_misc_Unsafe, getBoolean_name, getBoolean_signature, F_RN) \ | |
769 do_intrinsic(_getByte, sun_misc_Unsafe, getByte_name, getByte_signature, F_RN) \ | |
770 do_intrinsic(_getShort, sun_misc_Unsafe, getShort_name, getShort_signature, F_RN) \ | |
771 do_intrinsic(_getChar, sun_misc_Unsafe, getChar_name, getChar_signature, F_RN) \ | |
772 do_intrinsic(_getInt, sun_misc_Unsafe, getInt_name, getInt_signature, F_RN) \ | |
773 do_intrinsic(_getLong, sun_misc_Unsafe, getLong_name, getLong_signature, F_RN) \ | |
774 do_intrinsic(_getFloat, sun_misc_Unsafe, getFloat_name, getFloat_signature, F_RN) \ | |
775 do_intrinsic(_getDouble, sun_misc_Unsafe, getDouble_name, getDouble_signature, F_RN) \ | |
776 do_intrinsic(_putObject, sun_misc_Unsafe, putObject_name, putObject_signature, F_RN) \ | |
777 do_intrinsic(_putBoolean, sun_misc_Unsafe, putBoolean_name, putBoolean_signature, F_RN) \ | |
778 do_intrinsic(_putByte, sun_misc_Unsafe, putByte_name, putByte_signature, F_RN) \ | |
779 do_intrinsic(_putShort, sun_misc_Unsafe, putShort_name, putShort_signature, F_RN) \ | |
780 do_intrinsic(_putChar, sun_misc_Unsafe, putChar_name, putChar_signature, F_RN) \ | |
781 do_intrinsic(_putInt, sun_misc_Unsafe, putInt_name, putInt_signature, F_RN) \ | |
782 do_intrinsic(_putLong, sun_misc_Unsafe, putLong_name, putLong_signature, F_RN) \ | |
783 do_intrinsic(_putFloat, sun_misc_Unsafe, putFloat_name, putFloat_signature, F_RN) \ | |
784 do_intrinsic(_putDouble, sun_misc_Unsafe, putDouble_name, putDouble_signature, F_RN) \ | |
785 \ | |
786 do_name(getObjectVolatile_name,"getObjectVolatile") do_name(putObjectVolatile_name,"putObjectVolatile") \ | |
787 do_name(getBooleanVolatile_name,"getBooleanVolatile") do_name(putBooleanVolatile_name,"putBooleanVolatile") \ | |
788 do_name(getByteVolatile_name,"getByteVolatile") do_name(putByteVolatile_name,"putByteVolatile") \ | |
789 do_name(getShortVolatile_name,"getShortVolatile") do_name(putShortVolatile_name,"putShortVolatile") \ | |
790 do_name(getCharVolatile_name,"getCharVolatile") do_name(putCharVolatile_name,"putCharVolatile") \ | |
791 do_name(getIntVolatile_name,"getIntVolatile") do_name(putIntVolatile_name,"putIntVolatile") \ | |
792 do_name(getLongVolatile_name,"getLongVolatile") do_name(putLongVolatile_name,"putLongVolatile") \ | |
793 do_name(getFloatVolatile_name,"getFloatVolatile") do_name(putFloatVolatile_name,"putFloatVolatile") \ | |
794 do_name(getDoubleVolatile_name,"getDoubleVolatile") do_name(putDoubleVolatile_name,"putDoubleVolatile") \ | |
795 \ | |
796 do_intrinsic(_getObjectVolatile, sun_misc_Unsafe, getObjectVolatile_name, getObject_signature, F_RN) \ | |
797 do_intrinsic(_getBooleanVolatile, sun_misc_Unsafe, getBooleanVolatile_name, getBoolean_signature, F_RN) \ | |
798 do_intrinsic(_getByteVolatile, sun_misc_Unsafe, getByteVolatile_name, getByte_signature, F_RN) \ | |
799 do_intrinsic(_getShortVolatile, sun_misc_Unsafe, getShortVolatile_name, getShort_signature, F_RN) \ | |
800 do_intrinsic(_getCharVolatile, sun_misc_Unsafe, getCharVolatile_name, getChar_signature, F_RN) \ | |
801 do_intrinsic(_getIntVolatile, sun_misc_Unsafe, getIntVolatile_name, getInt_signature, F_RN) \ | |
802 do_intrinsic(_getLongVolatile, sun_misc_Unsafe, getLongVolatile_name, getLong_signature, F_RN) \ | |
803 do_intrinsic(_getFloatVolatile, sun_misc_Unsafe, getFloatVolatile_name, getFloat_signature, F_RN) \ | |
804 do_intrinsic(_getDoubleVolatile, sun_misc_Unsafe, getDoubleVolatile_name, getDouble_signature, F_RN) \ | |
805 do_intrinsic(_putObjectVolatile, sun_misc_Unsafe, putObjectVolatile_name, putObject_signature, F_RN) \ | |
806 do_intrinsic(_putBooleanVolatile, sun_misc_Unsafe, putBooleanVolatile_name, putBoolean_signature, F_RN) \ | |
807 do_intrinsic(_putByteVolatile, sun_misc_Unsafe, putByteVolatile_name, putByte_signature, F_RN) \ | |
808 do_intrinsic(_putShortVolatile, sun_misc_Unsafe, putShortVolatile_name, putShort_signature, F_RN) \ | |
809 do_intrinsic(_putCharVolatile, sun_misc_Unsafe, putCharVolatile_name, putChar_signature, F_RN) \ | |
810 do_intrinsic(_putIntVolatile, sun_misc_Unsafe, putIntVolatile_name, putInt_signature, F_RN) \ | |
811 do_intrinsic(_putLongVolatile, sun_misc_Unsafe, putLongVolatile_name, putLong_signature, F_RN) \ | |
812 do_intrinsic(_putFloatVolatile, sun_misc_Unsafe, putFloatVolatile_name, putFloat_signature, F_RN) \ | |
813 do_intrinsic(_putDoubleVolatile, sun_misc_Unsafe, putDoubleVolatile_name, putDouble_signature, F_RN) \ | |
814 \ | |
815 /* %%% these are redundant except perhaps for getAddress, but Unsafe has native methods for them */ \ | |
816 do_signature(getByte_raw_signature, "(J)B") \ | |
817 do_signature(putByte_raw_signature, "(JB)V") \ | |
818 do_signature(getShort_raw_signature, "(J)S") \ | |
819 do_signature(putShort_raw_signature, "(JS)V") \ | |
820 do_signature(getChar_raw_signature, "(J)C") \ | |
821 do_signature(putChar_raw_signature, "(JC)V") \ | |
822 do_signature(putInt_raw_signature, "(JI)V") \ | |
823 do_alias(getLong_raw_signature, /*(J)J*/ long_long_signature) \ | |
824 do_alias(putLong_raw_signature, /*(JJ)V*/ long_long_void_signature) \ | |
825 do_signature(getFloat_raw_signature, "(J)F") \ | |
826 do_signature(putFloat_raw_signature, "(JF)V") \ | |
827 do_alias(getDouble_raw_signature, /*(J)D*/ long_double_signature) \ | |
828 do_signature(putDouble_raw_signature, "(JD)V") \ | |
829 do_alias(getAddress_raw_signature, /*(J)J*/ long_long_signature) \ | |
830 do_alias(putAddress_raw_signature, /*(JJ)V*/ long_long_void_signature) \ | |
831 \ | |
832 do_name( getAddress_name, "getAddress") \ | |
833 do_name( putAddress_name, "putAddress") \ | |
834 \ | |
835 do_intrinsic(_getByte_raw, sun_misc_Unsafe, getByte_name, getByte_raw_signature, F_RN) \ | |
836 do_intrinsic(_getShort_raw, sun_misc_Unsafe, getShort_name, getShort_raw_signature, F_RN) \ | |
837 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
|
838 do_intrinsic(_getInt_raw, sun_misc_Unsafe, getInt_name, long_int_signature, F_RN) \ |
0 | 839 do_intrinsic(_getLong_raw, sun_misc_Unsafe, getLong_name, getLong_raw_signature, F_RN) \ |
840 do_intrinsic(_getFloat_raw, sun_misc_Unsafe, getFloat_name, getFloat_raw_signature, F_RN) \ | |
841 do_intrinsic(_getDouble_raw, sun_misc_Unsafe, getDouble_name, getDouble_raw_signature, F_RN) \ | |
842 do_intrinsic(_getAddress_raw, sun_misc_Unsafe, getAddress_name, getAddress_raw_signature, F_RN) \ | |
843 do_intrinsic(_putByte_raw, sun_misc_Unsafe, putByte_name, putByte_raw_signature, F_RN) \ | |
844 do_intrinsic(_putShort_raw, sun_misc_Unsafe, putShort_name, putShort_raw_signature, F_RN) \ | |
845 do_intrinsic(_putChar_raw, sun_misc_Unsafe, putChar_name, putChar_raw_signature, F_RN) \ | |
846 do_intrinsic(_putInt_raw, sun_misc_Unsafe, putInt_name, putInt_raw_signature, F_RN) \ | |
847 do_intrinsic(_putLong_raw, sun_misc_Unsafe, putLong_name, putLong_raw_signature, F_RN) \ | |
848 do_intrinsic(_putFloat_raw, sun_misc_Unsafe, putFloat_name, putFloat_raw_signature, F_RN) \ | |
849 do_intrinsic(_putDouble_raw, sun_misc_Unsafe, putDouble_name, putDouble_raw_signature, F_RN) \ | |
850 do_intrinsic(_putAddress_raw, sun_misc_Unsafe, putAddress_name, putAddress_raw_signature, F_RN) \ | |
851 \ | |
852 do_intrinsic(_compareAndSwapObject, sun_misc_Unsafe, compareAndSwapObject_name, compareAndSwapObject_signature, F_RN) \ | |
853 do_name( compareAndSwapObject_name, "compareAndSwapObject") \ | |
854 do_signature(compareAndSwapObject_signature, "(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z") \ | |
855 do_intrinsic(_compareAndSwapLong, sun_misc_Unsafe, compareAndSwapLong_name, compareAndSwapLong_signature, F_RN) \ | |
856 do_name( compareAndSwapLong_name, "compareAndSwapLong") \ | |
857 do_signature(compareAndSwapLong_signature, "(Ljava/lang/Object;JJJ)Z") \ | |
858 do_intrinsic(_compareAndSwapInt, sun_misc_Unsafe, compareAndSwapInt_name, compareAndSwapInt_signature, F_RN) \ | |
859 do_name( compareAndSwapInt_name, "compareAndSwapInt") \ | |
860 do_signature(compareAndSwapInt_signature, "(Ljava/lang/Object;JII)Z") \ | |
861 do_intrinsic(_putOrderedObject, sun_misc_Unsafe, putOrderedObject_name, putOrderedObject_signature, F_RN) \ | |
862 do_name( putOrderedObject_name, "putOrderedObject") \ | |
863 do_alias( putOrderedObject_signature, /*(LObject;JLObject;)V*/ putObject_signature) \ | |
864 do_intrinsic(_putOrderedLong, sun_misc_Unsafe, putOrderedLong_name, putOrderedLong_signature, F_RN) \ | |
865 do_name( putOrderedLong_name, "putOrderedLong") \ | |
866 do_alias( putOrderedLong_signature, /*(Ljava/lang/Object;JJ)V*/ putLong_signature) \ | |
867 do_intrinsic(_putOrderedInt, sun_misc_Unsafe, putOrderedInt_name, putOrderedInt_signature, F_RN) \ | |
868 do_name( putOrderedInt_name, "putOrderedInt") \ | |
869 do_alias( putOrderedInt_signature, /*(Ljava/lang/Object;JI)V*/ putInt_signature) \ | |
870 \ | |
871 /* prefetch_signature is shared by all prefetch variants */ \ | |
872 do_signature( prefetch_signature, "(Ljava/lang/Object;J)V") \ | |
873 \ | |
874 do_intrinsic(_prefetchRead, sun_misc_Unsafe, prefetchRead_name, prefetch_signature, F_RN) \ | |
875 do_name( prefetchRead_name, "prefetchRead") \ | |
876 do_intrinsic(_prefetchWrite, sun_misc_Unsafe, prefetchWrite_name, prefetch_signature, F_RN) \ | |
877 do_name( prefetchWrite_name, "prefetchWrite") \ | |
878 do_intrinsic(_prefetchReadStatic, sun_misc_Unsafe, prefetchReadStatic_name, prefetch_signature, F_SN) \ | |
879 do_name( prefetchReadStatic_name, "prefetchReadStatic") \ | |
880 do_intrinsic(_prefetchWriteStatic, sun_misc_Unsafe, prefetchWriteStatic_name, prefetch_signature, F_SN) \ | |
881 do_name( prefetchWriteStatic_name, "prefetchWriteStatic") \ | |
856
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
882 /*== LAST_COMPILER_INLINE*/ \ |
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
883 /*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
|
884 \ |
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
885 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
|
886 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
887 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
|
888 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
|
889 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
|
890 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
891 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
|
892 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
|
893 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
|
894 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
895 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
|
896 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
897 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
|
898 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
|
899 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
|
900 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
901 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
|
902 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
|
903 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
|
904 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
905 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
|
906 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
907 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
|
908 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
909 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
|
910 \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
911 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
|
912 /* (symbol object_initializer_name defined above) */ \ |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
913 \ |
1507
cd5dbf694d45
6939134: JSR 292 adjustments to method handle invocation
jrose
parents:
1396
diff
changeset
|
914 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
|
915 /* (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
|
916 do_intrinsic(_checkSpreadArgument, java_lang_invoke_MethodHandleNatives, checkSpreadArgument_name, checkSpreadArgument_signature, F_S) \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
917 do_intrinsic(_checkSpreadArgument_TRANS,sun_dyn_MethodHandleImpl, checkSpreadArgument_name, checkSpreadArgument_signature, F_S) /* AllowTransitionalJSR292 ONLY */ \ |
8033953d67ff
7012648: move JSR 292 to package java.lang.invoke and adjust names
jrose
parents:
2356
diff
changeset
|
918 do_intrinsic(_checkSpreadArgument_TRANS2,java_dyn_MethodHandleNatives, checkSpreadArgument_name, checkSpreadArgument_signature, F_S) /* AllowTransitionalJSR292 ONLY */ \ |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
919 do_name( checkSpreadArgument_name, "checkSpreadArgument") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
920 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
|
921 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
|
922 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
|
923 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
|
924 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
|
925 \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
926 /* unboxing methods: */ \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
927 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
|
928 do_name( booleanValue_name, "booleanValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
929 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
|
930 do_name( byteValue_name, "byteValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
931 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
|
932 do_name( charValue_name, "charValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
933 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
|
934 do_name( shortValue_name, "shortValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
935 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
|
936 do_name( intValue_name, "intValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
937 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
|
938 do_name( longValue_name, "longValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
939 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
|
940 do_name( floatValue_name, "floatValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
941 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
|
942 do_name( doubleValue_name, "doubleValue") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
943 \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
944 /* boxing methods: */ \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
945 do_name( valueOf_name, "valueOf") \ |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
946 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
|
947 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
|
948 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
|
949 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
|
950 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
|
951 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
|
952 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
|
953 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
|
954 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
|
955 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
|
956 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
|
957 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
|
958 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
|
959 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
|
960 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
|
961 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
|
962 \ |
0 | 963 /*end*/ |
964 | |
965 | |
966 | |
856
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
967 |
0 | 968 // Class vmSymbols |
969 | |
970 class vmSymbols: AllStatic { | |
971 friend class vmIntrinsics; | |
972 public: | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
973 // enum for figuring positions and size of array holding Symbol*s |
0 | 974 enum SID { |
975 NO_SID = 0, | |
976 | |
977 #define VM_SYMBOL_ENUM(name, string) VM_SYMBOL_ENUM_NAME(name), | |
978 VM_SYMBOLS_DO(VM_SYMBOL_ENUM, VM_ALIAS_IGNORE) | |
979 #undef VM_SYMBOL_ENUM | |
980 | |
981 SID_LIMIT, | |
982 | |
983 #define VM_ALIAS_ENUM(name, def) VM_SYMBOL_ENUM_NAME(name) = VM_SYMBOL_ENUM_NAME(def), | |
984 VM_SYMBOLS_DO(VM_SYMBOL_IGNORE, VM_ALIAS_ENUM) | |
985 #undef VM_ALIAS_ENUM | |
986 | |
987 FIRST_SID = NO_SID + 1 | |
988 }; | |
989 enum { | |
990 log2_SID_LIMIT = 10 // checked by an assert at start-up | |
991 }; | |
992 | |
993 private: | |
994 // The symbol array | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
995 static Symbol* _symbols[]; |
0 | 996 |
997 // Field signatures indexed by BasicType. | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
998 static Symbol* _type_signatures[T_VOID+1]; |
0 | 999 |
1000 public: | |
1001 // Initialization | |
1002 static void initialize(TRAPS); | |
1003 // Accessing | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1004 #define VM_SYMBOL_DECLARE(name, ignore) \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1005 static Symbol* name() { \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1006 return _symbols[VM_SYMBOL_ENUM_NAME(name)]; \ |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1007 } |
0 | 1008 VM_SYMBOLS_DO(VM_SYMBOL_DECLARE, VM_SYMBOL_DECLARE) |
1009 #undef VM_SYMBOL_DECLARE | |
1010 | |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1011 // Sharing support |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1012 static void symbols_do(SymbolClosure* f); |
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1013 static void serialize(SerializeOopClosure* soc); |
0 | 1014 |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1015 static Symbol* type_signature(BasicType t) { |
0 | 1016 assert((uint)t < T_VOID+1, "range check"); |
1017 assert(_type_signatures[t] != NULL, "domain check"); | |
1018 return _type_signatures[t]; | |
1019 } | |
1020 // 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
|
1021 static BasicType signature_type(Symbol* s); |
0 | 1022 |
2177
3582bf76420e
6990754: Use native memory and reference counting to implement SymbolTable
coleenp
parents:
2129
diff
changeset
|
1023 static Symbol* symbol_at(SID id) { |
0 | 1024 assert(id >= FIRST_SID && id < SID_LIMIT, "oob"); |
1025 assert(_symbols[id] != NULL, "init"); | |
1026 return _symbols[id]; | |
1027 } | |
1028 | |
1029 // 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
|
1030 static SID find_sid(Symbol* symbol); |
2356
72dee110246f
6839872: remove implementation inheritance from JSR 292 APIs
jrose
parents:
2202
diff
changeset
|
1031 static SID find_sid(const char* symbol_name); |
0 | 1032 |
1033 #ifndef PRODUCT | |
1034 // No need for this in the product: | |
1035 static const char* name_for(SID sid); | |
1036 #endif //PRODUCT | |
1037 }; | |
1038 | |
1039 // VM Intrinsic ID's uniquely identify some very special methods | |
1040 class vmIntrinsics: AllStatic { | |
1041 friend class vmSymbols; | |
1042 friend class ciObjectFactory; | |
1043 | |
1044 public: | |
1045 // Accessing | |
1046 enum ID { | |
1047 _none = 0, // not an intrinsic (default answer) | |
1048 | |
1049 #define VM_INTRINSIC_ENUM(id, klass, name, sig, flags) id, | |
1050 VM_INTRINSICS_DO(VM_INTRINSIC_ENUM, | |
1051 VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_SYMBOL_IGNORE, VM_ALIAS_IGNORE) | |
1052 #undef VM_INTRINSIC_ENUM | |
1053 | |
1054 ID_LIMIT, | |
856
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
1055 LAST_COMPILER_INLINE = _prefetchWriteStatic, |
0 | 1056 FIRST_ID = _none + 1 |
1057 }; | |
1058 | |
1059 enum Flags { | |
1060 // AccessFlags syndromes relevant to intrinsics. | |
1061 F_none = 0, | |
1080
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1062 F_R, // !static ?native !synchronized (R="regular") |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1063 F_S, // static ?native !synchronized |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1064 F_Y, // !static ?native synchronized |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1065 F_RN, // !static native !synchronized |
7c57aead6d3e
6892658: C2 should optimize some stringbuilder patterns
never
parents:
1059
diff
changeset
|
1066 F_SN, // static native !synchronized |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1067 F_RNY, // !static native synchronized |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1068 |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1069 FLAG_LIMIT |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1070 }; |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1071 enum { |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1072 log2_FLAG_LIMIT = 4 // checked by an assert at start-up |
0 | 1073 }; |
1074 | |
1075 public: | |
1076 static ID ID_from(int raw_id) { | |
1077 assert(raw_id >= (int)_none && raw_id < (int)ID_LIMIT, | |
1078 "must be a valid intrinsic ID"); | |
1079 return (ID)raw_id; | |
1080 } | |
1081 | |
1082 static const char* name_at(ID id); | |
1083 | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1084 private: |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1085 static ID find_id_impl(vmSymbols::SID holder, |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1086 vmSymbols::SID name, |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1087 vmSymbols::SID sig, |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1088 jshort flags); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1089 |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1090 public: |
0 | 1091 // Given a method's class, name, signature, and access flags, report its ID. |
1092 static ID find_id(vmSymbols::SID holder, | |
1093 vmSymbols::SID name, | |
1094 vmSymbols::SID sig, | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1095 jshort flags) { |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1096 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
|
1097 #ifdef ASSERT |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1098 // ID _none does not hold the following asserts. |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1099 if (id == _none) return id; |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1100 #endif |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1101 assert( class_for(id) == holder, "correct id"); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1102 assert( name_for(id) == name, "correct id"); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1103 assert(signature_for(id) == sig, "correct id"); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1104 return id; |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1105 } |
0 | 1106 |
1107 static void verify_method(ID actual_id, methodOop m) PRODUCT_RETURN; | |
1108 | |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1109 // Find out the symbols behind an intrinsic: |
0 | 1110 static vmSymbols::SID class_for(ID id); |
1111 static vmSymbols::SID name_for(ID id); | |
1112 static vmSymbols::SID signature_for(ID id); | |
1113 static Flags flags_for(ID id); | |
1114 | |
1115 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
|
1116 |
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
1117 // Access to intrinsic methods: |
75596850f863
6862576: vmIntrinsics needs cleanup in order to support JSR 292 intrinsics
jrose
parents:
775
diff
changeset
|
1118 static methodOop method_for(ID id); |
1133
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1119 |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1120 // Wrapper object methods: |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1121 static ID for_boxing(BasicType type); |
aa62b9388fce
6894206: JVM needs a way to traverse method handle structures
twisti
parents:
1080
diff
changeset
|
1122 static ID for_unboxing(BasicType type); |
1138
dd57230ba8fe
6893268: additional dynamic language related optimizations in C2
twisti
parents:
1135
diff
changeset
|
1123 |
dd57230ba8fe
6893268: additional dynamic language related optimizations in C2
twisti
parents:
1135
diff
changeset
|
1124 // Raw conversion: |
dd57230ba8fe
6893268: additional dynamic language related optimizations in C2
twisti
parents:
1135
diff
changeset
|
1125 static ID for_raw_conversion(BasicType src, BasicType dest); |
0 | 1126 }; |
1972 | 1127 |
1128 #endif // SHARE_VM_CLASSFILE_VMSYMBOLS_HPP |