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

Coleen Phillimore coleenp at openjdk.java.net
Tue Oct 27 19:49:23 UTC 2020


On Tue, 27 Oct 2020 19:22:51 GMT, Aleksey Shipilev <shade 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?

Yes, I had the same queasy feeling looking at this.  It's just unclear at this callsite that push_i doesn't do the wrong thing for 64 bit.

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

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


More information about the hotspot-dev mailing list