comparison src/share/vm/classfile/javaClasses.cpp @ 3905:c26de9aef2ed

7071307: MethodHandle bimorphic inlining should consider the frequency Reviewed-by: twisti, roland, kvn, iveresov
author never
date Fri, 02 Sep 2011 20:58:21 -0700
parents a32de5085326
children f94227b6117b b0efc7ee3b31
comparison
equal deleted inserted replaced
3902:11a4af030e4b 3905:c26de9aef2ed
2322 int java_lang_invoke_BoundMethodHandle::_argument_offset; 2322 int java_lang_invoke_BoundMethodHandle::_argument_offset;
2323 int java_lang_invoke_BoundMethodHandle::_vmargslot_offset; 2323 int java_lang_invoke_BoundMethodHandle::_vmargslot_offset;
2324 2324
2325 int java_lang_invoke_AdapterMethodHandle::_conversion_offset; 2325 int java_lang_invoke_AdapterMethodHandle::_conversion_offset;
2326 2326
2327 int java_lang_invoke_CountingMethodHandle::_vmcount_offset;
2328
2327 void java_lang_invoke_MethodHandle::compute_offsets() { 2329 void java_lang_invoke_MethodHandle::compute_offsets() {
2328 klassOop k = SystemDictionary::MethodHandle_klass(); 2330 klassOop k = SystemDictionary::MethodHandle_klass();
2329 if (k != NULL && EnableInvokeDynamic) { 2331 if (k != NULL && EnableInvokeDynamic) {
2330 bool allow_super = false; 2332 bool allow_super = false;
2331 compute_offset(_type_offset, k, vmSymbols::type_name(), vmSymbols::java_lang_invoke_MethodType_signature(), allow_super); 2333 compute_offset(_type_offset, k, vmSymbols::type_name(), vmSymbols::java_lang_invoke_MethodType_signature(), allow_super);
2368 void java_lang_invoke_AdapterMethodHandle::compute_offsets() { 2370 void java_lang_invoke_AdapterMethodHandle::compute_offsets() {
2369 klassOop k = SystemDictionary::AdapterMethodHandle_klass(); 2371 klassOop k = SystemDictionary::AdapterMethodHandle_klass();
2370 if (k != NULL && EnableInvokeDynamic) { 2372 if (k != NULL && EnableInvokeDynamic) {
2371 compute_offset(_conversion_offset, k, vmSymbols::conversion_name(), vmSymbols::int_signature(), true); 2373 compute_offset(_conversion_offset, k, vmSymbols::conversion_name(), vmSymbols::int_signature(), true);
2372 } 2374 }
2375 }
2376
2377 void java_lang_invoke_CountingMethodHandle::compute_offsets() {
2378 klassOop k = SystemDictionary::CountingMethodHandle_klass();
2379 if (k != NULL && EnableInvokeDynamic) {
2380 compute_offset(_vmcount_offset, k, vmSymbols::vmcount_name(), vmSymbols::int_signature(), true);
2381 }
2382 }
2383
2384 int java_lang_invoke_CountingMethodHandle::vmcount(oop mh) {
2385 assert(is_instance(mh), "CMH only");
2386 return mh->int_field(_vmcount_offset);
2387 }
2388
2389 void java_lang_invoke_CountingMethodHandle::set_vmcount(oop mh, int count) {
2390 assert(is_instance(mh), "CMH only");
2391 mh->int_field_put(_vmcount_offset, count);
2373 } 2392 }
2374 2393
2375 oop java_lang_invoke_MethodHandle::type(oop mh) { 2394 oop java_lang_invoke_MethodHandle::type(oop mh) {
2376 return mh->obj_field(_type_offset); 2395 return mh->obj_field(_type_offset);
2377 } 2396 }
3041 java_lang_invoke_BoundMethodHandle::compute_offsets(); 3060 java_lang_invoke_BoundMethodHandle::compute_offsets();
3042 java_lang_invoke_AdapterMethodHandle::compute_offsets(); 3061 java_lang_invoke_AdapterMethodHandle::compute_offsets();
3043 java_lang_invoke_MethodType::compute_offsets(); 3062 java_lang_invoke_MethodType::compute_offsets();
3044 java_lang_invoke_MethodTypeForm::compute_offsets(); 3063 java_lang_invoke_MethodTypeForm::compute_offsets();
3045 java_lang_invoke_CallSite::compute_offsets(); 3064 java_lang_invoke_CallSite::compute_offsets();
3065 java_lang_invoke_CountingMethodHandle::compute_offsets();
3046 } 3066 }
3047 java_security_AccessControlContext::compute_offsets(); 3067 java_security_AccessControlContext::compute_offsets();
3048 // Initialize reflection classes. The layouts of these classes 3068 // Initialize reflection classes. The layouts of these classes
3049 // changed with the new reflection implementation in JDK 1.4, and 3069 // changed with the new reflection implementation in JDK 1.4, and
3050 // since the Universe doesn't know what JDK version it is until this 3070 // since the Universe doesn't know what JDK version it is until this