RFR: 8008243: Zero: Implement fast bytecodes [v2]

Aleksey Shipilev shade at openjdk.java.net
Thu Nov 4 10:44:33 UTC 2021


On Tue, 19 Oct 2021 10:00:17 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

>> This work improves Zero performance considerably, without complicating the interpreter all that much. This work is based on much earlier patch by @rkennke, then edited by @jerboaa, and finally polished by me here :)
>> 
>> SPECjvm benchmarks improve across the board, with lowest improvement on `Derby` (+6%) and largest on `Compress` (+50%). Given that Zero is used to implement the JVM on emerging platforms that are still rather slow themselves, it makes sense to make Zero quantifiably faster. Even 10% improvement means more than 2 hours a day worth of CPU time.
>> 
>> Additional testing:
>>  - [x] Linux x86_64 Zero fastdebug bootcycle-images
>>  - [x]  Linux x86_64 Zero fastdebug `tier1`
>>  - [x] Linux x86_64 Zero fastdebug fuzzer tests (no failures = no new behaviors introduced)
>
> Aleksey Shipilev has updated the pull request incrementally with three additional commits since the last revision:
> 
>  - Remove shadowing "obj" to fix JVMTI tests
>  - Comment _fast_zputfield LSB
>  - MAYBE_POST_FIELD_MODIFICATION should check _putstatic

I realized that there are feature flags (`RewriteBytecodes`) that govern such translation. New patch implements that handling, thus giving us an escape hatch if the translation is incorrect. Since field accesses are hot and checking the flag within the interpreter slows it down measurably, I opted to specialize `BytecodeInterpreter` a bit more.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1938


More information about the hotspot-runtime-dev mailing list