Closed
Bug 463743
Opened 16 years ago
Closed 16 years ago
Update x64 port for redux nanojit
Categories
(Tamarin Graveyard :: Baseline JIT (CodegenLIR), defect)
Tracking
(Not tracked)
VERIFIED
WONTFIX
People
(Reporter: dvander, Assigned: dvander)
Details
Attachments
(1 file)
26.96 KB,
patch
|
Details | Diff | Splinter Review |
Working on this now, my TODO list so far:
- Split LIR_quad into LIR_quad and LIR_float
- Add LIR_qcall
- Get stack reservation to play nicely with STACK_GRANULARITY==8
- Fix ensureRoom() calls
Assignee | ||
Comment 1•16 years ago
|
||
No r? yet, still trying to track down bugs in SunSpider (raytrace, aes are acting up).
Comment 2•16 years ago
|
||
is this a dupe of 464476 (or vice versa?)
Assignee | ||
Comment 3•16 years ago
|
||
It wasn't intended to be a dupe but a preceding bug - but if the existing x64 code base is going to be scrapped then this can be closed.
The only thing that's important from this patch is the separation of LIR_float from LIR_quad, because a LIR_quad(0) could either be a NULL pointer or a 0.0 float. TraceMonkey peeks into the LIR to determine this difference but on x64 it doesn't work.
Comment 4•16 years ago
|
||
ive got a working rewrite of the x64 backend and so far i havent had the need for LIR_float, so maybe i dont understand the current issue?
x64 can freely copy xmm<->gpr registers without storing to memory, which i take advantage of in asm_nongp_copy(). Floating point operations request XMM registers for their operands, so sometimes we will get into asm_quad() and the required register will already be XMM. sometimes it will be GPR, either way it works.
Assignee | ||
Comment 5•16 years ago
|
||
(In reply to comment #4)
> ive got a working rewrite of the x64 backend and so far i havent had the need
> for LIR_float, so maybe i dont understand the current issue?
It's an issue on TraceMonkey's end. When speculating numeric types we look at:
> (i->isconstq() && ((d = i->constvalf()) == (jsdouble)(jsint)d))
If that's true, we demote to an integer. This fails on x64 if the value is a 64-bit 0 intended as a NULL pointer. Distinctly separating the types solved it.
If it's a problem I can add it back in later - I wouldn't let it block landing your x64 stuff.
Comment 6•16 years ago
|
||
Does this patch need to be rebased now that the x64 nanojit has landed?
Flags: flashplayer-triage+
Flags: flashplayer-qrb-
Assignee | ||
Comment 7•16 years ago
|
||
This patch is dead now that there's a new x64 port.
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → WONTFIX
Updated•15 years ago
|
Status: RESOLVED → VERIFIED
You need to log in
before you can comment on or make changes to this bug.
Description
•