comparison src/share/vm/classfile/javaClasses.cpp @ 12010:ca0165daa6ec

7187554: JSR 292: JVMTI PopFrame needs to handle appendix arguments Summary: Restore the appendix argument after PopFrame() call Reviewed-by: twisti, coleenp Contributed-by: serguei.spitsyn@oracle.com
author sspitsyn
date Tue, 06 Aug 2013 16:33:59 -0700
parents 3a0774193f71
children 3cce976666d9 63147986a428
comparison
equal deleted inserted replaced
11996:22a5aff0df0b 12010:ca0165daa6ec
2555 InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::SoftReference_klass()); 2555 InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::SoftReference_klass());
2556 jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset); 2556 jlong* offset = (jlong*)ik->static_field_addr(static_clock_offset);
2557 *offset = value; 2557 *offset = value;
2558 } 2558 }
2559 2559
2560 // Support for java_lang_invoke_DirectMethodHandle
2561
2562 int java_lang_invoke_DirectMethodHandle::_member_offset;
2563
2564 oop java_lang_invoke_DirectMethodHandle::member(oop dmh) {
2565 oop member_name = NULL;
2566 bool is_dmh = dmh->is_oop() && java_lang_invoke_DirectMethodHandle::is_instance(dmh);
2567 assert(is_dmh, "a DirectMethodHandle oop is expected");
2568 if (is_dmh) {
2569 member_name = dmh->obj_field(member_offset_in_bytes());
2570 }
2571 return member_name;
2572 }
2573
2574 void java_lang_invoke_DirectMethodHandle::compute_offsets() {
2575 Klass* klass_oop = SystemDictionary::DirectMethodHandle_klass();
2576 if (klass_oop != NULL && EnableInvokeDynamic) {
2577 compute_offset(_member_offset, klass_oop, vmSymbols::member_name(), vmSymbols::java_lang_invoke_MemberName_signature());
2578 }
2579 }
2560 2580
2561 // Support for java_lang_invoke_MethodHandle 2581 // Support for java_lang_invoke_MethodHandle
2562 2582
2563 int java_lang_invoke_MethodHandle::_type_offset; 2583 int java_lang_invoke_MethodHandle::_type_offset;
2564 int java_lang_invoke_MethodHandle::_form_offset; 2584 int java_lang_invoke_MethodHandle::_form_offset;
3203 java_lang_ClassLoader::compute_offsets(); 3223 java_lang_ClassLoader::compute_offsets();
3204 java_lang_Thread::compute_offsets(); 3224 java_lang_Thread::compute_offsets();
3205 java_lang_ThreadGroup::compute_offsets(); 3225 java_lang_ThreadGroup::compute_offsets();
3206 if (EnableInvokeDynamic) { 3226 if (EnableInvokeDynamic) {
3207 java_lang_invoke_MethodHandle::compute_offsets(); 3227 java_lang_invoke_MethodHandle::compute_offsets();
3228 java_lang_invoke_DirectMethodHandle::compute_offsets();
3208 java_lang_invoke_MemberName::compute_offsets(); 3229 java_lang_invoke_MemberName::compute_offsets();
3209 java_lang_invoke_LambdaForm::compute_offsets(); 3230 java_lang_invoke_LambdaForm::compute_offsets();
3210 java_lang_invoke_MethodType::compute_offsets(); 3231 java_lang_invoke_MethodType::compute_offsets();
3211 java_lang_invoke_CallSite::compute_offsets(); 3232 java_lang_invoke_CallSite::compute_offsets();
3212 } 3233 }