RFR: 8255397: x86: coalesce reference and int entry points into vtos bytecodes

Aleksey Shipilev shade at openjdk.java.net
Tue Oct 27 19:25:19 UTC 2020


On Mon, 26 Oct 2020 14:53:08 GMT, Claes Redestad <redestad at openjdk.org> wrote:

> On x86 - both 32- and 64-bit - the code laid out for transitionining into a vtos bytecode when having a reference and int top-of-stack state is semantically identical, and can be coalesced.
> 
> This patch removes a short jump on some cases which is marginally beneficial when interpreting, while measurably reducing overhead of generating the interpreter itself.

It rubs me the wrong way that we are effectively changing `push_ptr` to `push_i` for `aep`. While it is implemented in the same manner in `interp_masm_x86.cpp` -- delegating to `push`, it still means if `push_i` implementation changes, `aep` would do the `push_i` _as if_ it is integer, not pointer. Ditto a change in `push_ptr` (adding verification, maybe?) would miss this code.

So, how much of the improvement we are talking about to sacrifice this?

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

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


More information about the hotspot-dev mailing list