Closed Bug 423660 Opened 18 years ago Closed 18 years ago

create a literal pool instead of inlining each literal separately

Categories

(Tamarin Graveyard :: Tracing Virtual Machine, defect, P2)

ARM
All
defect

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: edwsmith, Assigned: rwinchel)

Details

Attachments

(1 file, 1 obsolete file)

each time arm or thumb codes needs to insert inline data, you will get: B target data padding target: ... this is a constant pool of one, we use PC relative addressing to reach it. we can do much better. Thumb: - only positive offsets from PC are supported. - +1K range Arm: - positive & negative offsets supported. +/-4K range is supported. TC's prototype Arm support puts a constant pool at the bottom of each 4K page as it generates code in a forward pass. when the forward growing code meets the backwards growing cpool, we start a new page. with backwards generation and backwards indexing to the cpool, this will also work on ARM, just doing it upside down.
Assignee: nobody → rwinchel
Priority: -- → P2
On ARM, values are inserted at top of page and pool grows downward as code grows upward. On Thumb, pools are interleaved with code. Size of pool is controlled by compile-time constant (currently 16).
Attachment #320710 - Flags: review?(edwsmith)
Attached patch Updated patchSplinter Review
Updated patch with platform specific implementation separated out.
Attachment #320710 - Attachment is obsolete: true
Attachment #320720 - Flags: review?(edwsmith)
Attachment #320710 - Flags: review?(edwsmith)
* what's with isB22() being commented out in CALL() for Thumb? * is the math in arm underrunProtect() right? on arm, i think we need to check samePage(nIns-u, nIns-1) arm: u = (intptr_t)_nIns - 8; thumb: u = (intptr_t)_nIns - 2; should arm be nIns-4?
Comment on attachment 320720 [details] [diff] [review] Updated patch good to go if you can double check that underrunProtect() math
Attachment #320720 - Flags: review?(edwsmith) → review+
might be nice for pageAlloc() to return a Page* then you can avoid the +1 math to get around the next pointer and simply do ->nIns. Also, it might be worthwhile to remember what constants are on the page, so that we can re-use them, that is assuming we are imm folding at the instruction level. If we aren't then we won't need to.
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: