[Webkit-unassigned] [Bug 122746] [sh4] Introduce const pools in LLINT

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Oct 14 16:10:40 PDT 2013


https://bugs.webkit.org/show_bug.cgi?id=122746





--- Comment #6 from Julien Brianceau <jbriance at cisco.com>  2013-10-14 16:09:25 PST ---
The ConstPoolEntry class describes a constant: a size (16 or 32 bits), a value, a label (instance of LocalLabel) and a reference on it (instance of LocalLabelReference).
The ConstPool class describes a contant pool: a set of entries (ConstPoolEntry instances) of a specific size (16 or 32 bits).

The sh4LowerConstPool function iterates on all opcodes and handles two constant pools: one for 16 bit constants (currentPool16) and one for 32 bit constants (currentPool32):
- these 2 pools will be filled with constants when needed (case of the "move" opcode with values outside -127..128 range)
- these 2 pools will be flushed (if non empty) after non return opcodes "jmp" and "ret"
- before adding an entry in the pool, we check that there isn't already an entry with the matching value in it (in this case we reuse it instead of creating a new one)
- 16 bit entries are put before 32 bit ones because the max offset between the move opcode and the constant is 512 bytes for 16 bit values, whereas it's 1024 bytes for 32 bit ones
- there is 2 separate pools to avoid space wasted by alignment constraints

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list