RFR 8144256: compiler/uncommontrap/TestStackBangRbp.java crashes VM on Solaris

Coleen Phillimore coleen.phillimore at oracle.com
Thu Dec 17 17:22:21 UTC 2015


Summary: Take out inlining of methodHandle copy constructors and destructors

Also made a few less copy constructor calls in the verifier.  I looked 
at the generated .s file for before/after ClassVerifier::verify_method() 
call and before has 61 copy constructors and 569 destructors.  After has 
8 copy constructors and 516 destructors.  The destructor calls are for 
the CHECK exits in verify_method() to destruct the correctly copied 
methodHandle object in BytecodeStream.   It would be _really nice_ to do 
some more refactoring of verify_method() so that more bytecodes call out 
to a separate verify_xx, like the dup2_xwhatever ones for example.

I ran this through RBT quick (on all platforms), the test case that 
failed with product build, and tested with refworkload that there's no 
performance regression.  I also tested java -Xverify:all -version with 
and without this change with no difference in performance.

Note also, that the original failure was due to a solaris x86 c++ 
compiler bug that will be fixed in the next version.  The bug looks like 
the solaris register allocator decided to bail on verify_method (still 
trying to get the bug report from the compiler team).   Even so, these 
methodHandle functions make calls and are too large to have inlined.  
With the elimination of copy constructor calls and associated destructor 
calls in the change that passes const methodHandle&, this won't have any 
performance impact (and may improve generated code).  Also, 
methodHandles are different than oop Handles and maybe we should have 
changed their name to methodPtr or methodRegistrar or something but I 
didn't like any of the ideas for new names.   Kim suggested further 
improvements to methodHandles offline, like not saving Thread* but we 
need it for construction and destruction so might as well save it, now 
that we pass these by const reference.

open webrev at http://cr.openjdk.java.net/~coleenp/8144256/
bug link https://bugs.openjdk.java.net/browse/JDK-8144256

Thanks,
Coleen




More information about the hotspot-runtime-dev mailing list