[pr/110] RFR: 8317812: [Lilliput] Make C2 LoadNKlassCompactHeader more robust

Roman Kennke rkennke at openjdk.org
Tue Oct 10 20:32:04 UTC 2023


On Tue, 10 Oct 2023 19:16:45 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

>> Or is unset index `-1`, not `4`?
>
> For some reason, in x86 C2, register index 4 is 'no' register. Similar checks are used elsewhere, e.g. in encode_RegMem in x86_64.ad, line 643. Not sure how to make that better.

All the operand definitions use 0x4 for 'no index' e.g.:
operand stackSlotI(sRegI reg)
%{
  constraint(ALLOC_IN_RC(stack_slots));
  // No match rule because this operand is only generated in matching

  format %{ "[$reg]" %}
  interface(MEMORY_INTER) %{
    base(0x4);   // RSP
    index(0x4);  // No Index
    scale(0x0);  // No Scale
    disp($reg);  // Stack Offset
  %}
%}

There are many more cases like this in x86_64

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

PR Review Comment: https://git.openjdk.org/lilliput/pull/111#discussion_r1353230485


More information about the lilliput-dev mailing list