-
Type:
Enhancement
-
Resolution: Unresolved
-
Priority:
P3
-
Affects Version/s: repo-valhalla
-
Component/s: hotspot
History:
-JDK-8235914 added profiling around acmp to speculate that one operand is *not* a value object (or null).
-JDK-8228361 optimized acmp if the type of one operand is known at compile time.
- JDK-8376544 leveraged profiling info to speculate that one operand is a value object which then enablesJDK-8228361.
The goal of this RFE is to improve the situation when the profile is polluted or the operand types are truly megamorphic. There are still a few tricks that we can play. For example, similar to what's described in JDK-8252185, we could implement a fast path for "simple" value objects. At this point, it's not clear to me if that additional complexity is justified though.
Other options would be to create a bytecode or machine code stub for each value class that we can jump/call into from compiled code to perform the substitutability check.
-
-
- JDK-8376544 leveraged profiling info to speculate that one operand is a value object which then enables
The goal of this RFE is to improve the situation when the profile is polluted or the operand types are truly megamorphic. There are still a few tricks that we can play. For example, similar to what's described in JDK-8252185, we could implement a fast path for "simple" value objects. At this point, it's not clear to me if that additional complexity is justified though.
Other options would be to create a bytecode or machine code stub for each value class that we can jump/call into from compiled code to perform the substitutability check.
- relates to
-
JDK-8228361 [lworld] Optimize the substitutability check in C2
-
- Resolved
-
-
JDK-8235914 [lworld] Profile acmp bytecode
-
- Resolved
-
-
JDK-8376544 [lworld] Use profiling around acmp to speculate that one operand is a value object
-
- Open
-