Open
Bug 1113226
Opened 11 years ago
Updated 2 years ago
Simplify MoveResolver
Categories
(Core :: JavaScript Engine: JIT, enhancement, P5)
Tracking
()
NEW
People
(Reporter: mjrosenb, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
|
118 bytes,
application/x-javascript
|
Details |
I just added a patch for bug 1085824, which includes several fixes for problems in the move resolver, designed to deal with insanity induced by having aliased registers. I would like to:
Revert the move resolver to the state it was in originally (plus information about aliasing)
Add in a second move resolver that just spills all registers to the stack, then loads them in order
Rather than handling every corner case, if we ever run into a compound cycle (they are easy enough to detect, these were assertions in the original MoveResolver), fall back to the simple move resolver.
I haven't checked yet, but my intuition tells me that these rare cases basically never come up in real code.
Comment 1•11 years ago
|
||
If it's going to be rewritten we should also consider fixing problems like these:
[MoveGroup]
03dfe2c8 e52de004 str lr, [sp, #-4]!
03dfe2cc e59de09c ldr lr, [sp, #+156]
03dfe2d0 e58de070 str lr, [sp, #+112]
03dfe2d4 e59de000 ldr lr, [sp, #+0]
03dfe2d8 e28dd004 add sp, sp, #4
Two bugs in this sequence: (1) ip is available as a scratch so spilling and and restoring lr is unnecessary, and (2) the two last instructions could be merged into a regular pop.
(Will attach the test case, which is trivial; this code is from a run with -D with the new disassembler; the block in question is not hot, but the code could be tighter even so.)
Comment 2•11 years ago
|
||
Updated•10 years ago
|
Priority: -- → P5
Updated•4 years ago
|
Severity: normal → S3
Updated•2 years ago
|
You need to log in
before you can comment on or make changes to this bug.
Description
•