Open Bug 799281 Opened 12 years ago Updated 11 days ago

IonMonkey: OSR block ignored for range calculation

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect

Tracking

()

People

(Reporter: sstangl, Unassigned)

References

(Blocks 1 open bug)

Details

(Whiteboard: [ion:p1])

In 3d-cube:108, we have the following code: > [Block 0] > Constant 0 [range 0,0] > > [Block 1] > Unbox OsrValue [range -inf,inf] > > [Block 2] > Phi(Constant, Unbox) [range 0,0] which implies that the iteration variable is fixed at 0, when it varies. Range Analysis should give the Phi [-inf,inf], and we should look into asserting some subset of validity for ranges given to phis.
Whiteboard: [ion:p1]
This is done on purpose! A phi that points to an OsrValue is ignored, as it will have the same range as the other operand of the phi. It is not possible for the OsrValue to have another range, because it is derived from the same (JS/bytecode), only it runs in the interpreter/jm.
That is nearly completely correct (unfortunately). What Sean was pointing out is that the phi where the OSR value gets merged into the code is not in the loop header, but in the loop pre-header, so you can get bounds information which is wrong for the lifetime of the variable defined in the pre-header.
Assignee: general → nobody
Severity: normal → S3
Blocks: sm-opt-jits
You need to log in before you can comment on or make changes to this bug.