Mercurial > hg > truffle
comparison src/share/vm/classfile/javaClasses.cpp @ 10133:6337ca4dcad8
8008511: JSR 292: MemberName vmtarget refs to methods must be updated at class redefinition
Summary: Lazily create and maintain the MemberNameTable to be able to update MemberName's
Reviewed-by: coleenp, jrose, dholmes
Contributed-by: serguei.spitsyn@oracle.com
author | sspitsyn |
---|---|
date | Sat, 20 Apr 2013 04:07:08 -0700 |
parents | 22ba8c8ce6a6 |
children | f258c5828eb8 4b52137b07c9 |
comparison
equal
deleted
inserted
replaced
10132:5b6512efcdc4 | 10133:6337ca4dcad8 |
---|---|
2622 | 2622 |
2623 Metadata* java_lang_invoke_MemberName::vmtarget(oop mname) { | 2623 Metadata* java_lang_invoke_MemberName::vmtarget(oop mname) { |
2624 assert(is_instance(mname), "wrong type"); | 2624 assert(is_instance(mname), "wrong type"); |
2625 return (Metadata*)mname->address_field(_vmtarget_offset); | 2625 return (Metadata*)mname->address_field(_vmtarget_offset); |
2626 } | 2626 } |
2627 | |
2628 #if INCLUDE_JVMTI | |
2629 // Can be executed on VM thread only | |
2630 void java_lang_invoke_MemberName::adjust_vmtarget(oop mname, Metadata* ref) { | |
2631 assert((is_instance(mname) && (flags(mname) & (MN_IS_METHOD | MN_IS_CONSTRUCTOR)) > 0), "wrong type"); | |
2632 assert(Thread::current()->is_VM_thread(), "not VM thread"); | |
2633 mname->address_field_put(_vmtarget_offset, (address)ref); | |
2634 } | |
2635 #endif // INCLUDE_JVMTI | |
2627 | 2636 |
2628 void java_lang_invoke_MemberName::set_vmtarget(oop mname, Metadata* ref) { | 2637 void java_lang_invoke_MemberName::set_vmtarget(oop mname, Metadata* ref) { |
2629 assert(is_instance(mname), "wrong type"); | 2638 assert(is_instance(mname), "wrong type"); |
2630 // check the type of the vmtarget | 2639 // check the type of the vmtarget |
2631 oop dependency = NULL; | 2640 oop dependency = NULL; |