Request for review (M): 6969574: invokedynamic call sites deoptimize instead of executing
john.r.rose at oracle.com
Thu Jul 15 14:53:28 PDT 2010
The compilation of invokedynamic needs several small fixes to enable the expected code generation.
An initial breakage in ciTypeFlow was causing the compiler to deoptimize on dynamic call sites. Fixing this exposed a couple of other issues.
Summary of fixes:
1. Add missing case for byte_no classification. (cpCacheOop.hpp)
2. Rewrite misleading comment about byte_no. (cpCacheOop.cpp)
3. Pull "signature invoker" for an indy instruction from the correct CP cache field (f1). (ciEnv.cpp)
4. Clarify tests for is_method_handle_adapter vs. is_method_handle_invoke, and assert disjointness.
5. Correct format assertion on ldc. (methodHandleWalk.cpp)
The original problem (fixed by step 1) was a broken "is linked" test in ciTypeFlow which always caused a bail-out to the interpreter.
This made benchmark results somewhat... suboptimal.
Hat tip to Eric Bodden, who reported this last month.
More information about the hotspot-compiler-dev