Open Bug 777598 Opened 13 years ago Updated 11 months ago

IonMonkey: Inlined math operations should use isVolatileCall to inform the RA.

Categories

(Core :: JavaScript Engine, defect)

defect

Tracking

()

People

(Reporter: nbp, Unassigned)

References

(Blocks 1 open bug)

Details

(Whiteboard: [ion:t])

In bug 777570 suggest to use isCall LIR property instead of saveVolatile. The problem is that saveVolatile is not aware of the allocated registers and is saving all FPU registers which end-up being costly. At the opposite isCall cause the register allocator to spill everything before the Call instruction. This bug suggest adding an isVolatileCall LIR property such as we can only spill the intersection of live and volatile registers instead of one set or the other.
Whiteboard: [js:t] → [ion:t]
Assignee: general → nobody
Severity: normal → S3

Still relevant?

We've been talking a bit recently about how to clean up MDefinition::possiblyCalls and LNode::isCall, especially in the context of (M|L)iROps.yaml. This bug raises an interesting point: code that only does an ABI call maybe doesn't have to spill as many registers as code that calls other jitcode. Not entirely sure where VM calls fit. It would be nice if we had some sort of way to figure this out mechanically instead of annotating it by hand.

I think this is still relevant.

You need to log in before you can comment on or make changes to this bug.