RFR (S) 8169867 Method::restore_unshareable_info does not invoke Method::link_method

Ioi Lam ioi.lam at oracle.com
Mon Nov 21 06:58:13 UTC 2016


https://bugs.openjdk.java.net/browse/JDK-8169867
http://cr.openjdk.java.net/~iklam/jdk9/8169867_cds_not_calling_link_method.v01/

Thanks to Tobias for finding the bug. I have done the following

+ integrated Tobias' suggested fix
+ fixed Method::restore_unshareable_info to call Method::link_method
+ added comments and a diagram to illustrate how the CDS method entry
   trampolines work.

BTW, I am a little unhappy about the name ConstMethod::_adapter_trampoline.
It's basically an extra level of indirection to get to the adapter. However.
The word "trampoline" usually is used for and extra jump in executable code,
so it may be a little confusing when we use it for a data pointer here.

Any suggest for a better name?


Testing:
[1] I have tested Tobias' TestInterpreterMethodEntries.java class and
     now it produces the correct assertion. I won't check in this test, 
though,
     since it won't assert anymore after Tobias fixes 8169711.

# after -XX: or in .hotspotrc:  SuppressErrorAt=/method.cpp:1035
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error 
(/home/iklam/jdk/ul/hotspot/src/share/vm/oops/method.cpp:1035), 
pid=16840, tid=16843
#  assert(entry != __null && entry == _i2i_entry && entry == 
_from_interpreted_entry) failed:
#  should be correctly set during dump time

[2] Ran RBT in fastdebug build for 
hotspot/test/:hotspot_all,vm.parallel_class_loading,vm.runtime.testlist
     All tests passed.

Thanks
- Ioi



More information about the hotspot-dev mailing list