Open Bug 879655 Opened 11 years ago Updated 2 years ago

IonMonkey: OSR-merge phis should coerce untyped inputs to the OSR value's type

Categories

(Core :: JavaScript Engine, defect)

x86
macOS
defect

Tracking

()

People

(Reporter: djvj, Unassigned)

References

Details

Ran into this while diagnosing an issue in my patch for bug 859609. Consider the following loop: function makeFun() { return function () { ... }; } function main() { var fn = makeFun(); for (var i = 0; i < 10000; i++) { ... fn(...) ... } } Interpreter will execute the initial single call to makeFun, and not record type info. Subsequently, it will OSR into baseline at the loop, and later on baseline will OSR into Ion at the loop. The OSR-block's definition of |fn| will have an object type in its typeset, and the non-OSR-block's definition of |fn| will have no type information (since it never ran in baseline). In this case, the phi's type will be generalized to Value. It would work out better if the processing noticed that the Phi is unifying an object typed definition with an untyped definition, and inserted a fallible object unbox in front of the untyped definition.. allowing it to propogate the object type to the phi.
Assignee: general → nobody
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.