Commit 67c39c4a authored by Mark Mendell's avatar Mark Mendell Committed by Ian Rogers
Browse files

Support Literal pools for x86



They are being used to store double constants, which are very
expensive to generate into XMM registers.  Uses the 'Compiler
Temporary' support just added.  The MIR instructions are scanned for
a reference to a double constant, a packed switch or a FillArray.
These all need the address of the start of the method, since 32
bit x86 doesn't have a PC-relative addressing mode.

If needed, a compiler temporary is allocated, and the address of
the base of the method is calculated, and stored.  Later uses can
just refer to the saved value.

Trickiness comes when generating the load from the literal area,
as the offset is unknown before final assembler.  Assume a 32 bit
displacement is needed, and fix this if it wasn't necessary.

Use LoadValue to load the 'base of method' pointer.  Fix an incorrect
test in GetRegLocation.

Change-Id: I53ffaa725dabc370e9820c4e0e78664ede3563e6
Signed-off-by: default avatarMark Mendell <mark.p.mendell@intel.com>
parent 6a5ed25e
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment