Commit d921d64c authored by Alexandre Rames's avatar Alexandre Rames
Browse files

Opt compiler: ARM64: Block VIXLpools when recording the pc.

VIXL automatically handles and generate literal and veneer pools when
using the MacroAssembler. In general, the pools can be emitted
anywhere. Helpers are provided to forbid VIXL from emitting pools
locally.

So when writing the pseudo-code

    __ Fmov(d0, 1.2345);
    __ Ldr(dst, MemOperand(src, offset));
    FunctionRecordingCurrentPC();
    __ Add(x0, x1, x2);

VIXL might generate code looking like

    0x00: ldr s0, [pc, 0xc]
    0x04: ldr dst, [src, offset]
    0x08: b #0x10
    0x0c: <literal 1.2345>
    0x10: add x0, x1, x2

and the program counter recorded by the helper will point after the
literal pool.
So we explicitly stop VIXL from emitting pools when dealing with code
where we care about the program counter.

Change-Id: Ib964860539bdb10f5704c290bdf74e5db149e462
parent 09a99965
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment