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)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: edwsmith, Assigned: rwinchel)
Details
Attachments
(1 file, 1 obsolete file)
|
19.02 KB,
patch
|
edwsmith
:
review+
|
Details | Diff | Splinter Review |
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.
| Reporter | ||
Updated•18 years ago
|
Assignee: nobody → rwinchel
Priority: -- → P2
| Assignee | ||
Comment 1•18 years ago
|
||
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)
| Assignee | ||
Comment 2•18 years ago
|
||
Updated patch with platform specific implementation separated out.
Attachment #320710 -
Attachment is obsolete: true
Attachment #320720 -
Flags: review?(edwsmith)
Attachment #320710 -
Flags: review?(edwsmith)
| Reporter | ||
Comment 3•18 years ago
|
||
* 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?
| Reporter | ||
Comment 4•18 years ago
|
||
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+
Comment 5•18 years ago
|
||
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.
| Reporter | ||
Updated•18 years ago
|
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.
Description
•