Last Comment Bug 714686 - IonMonkey: Unbox OSR Values.
: IonMonkey: Unbox OSR Values.
Product: Core
Classification: Components
Component: JavaScript Engine (show other bugs)
: unspecified
: All All
-- normal (vote)
: ---
Assigned To: Nicolas B. Pierron [:nbp]
: Jason Orendorff [:jorendorff]
Depends on:
Blocks: IonMonkey
  Show dependency treegraph
Reported: 2012-01-02 15:54 PST by Nicolas B. Pierron [:nbp]
Modified: 2012-01-09 17:48 PST (History)
5 users (show)
See Also:
Crash Signature:
QA Whiteboard:
Iteration: ---
Points: ---
Has Regression Range: ---
Has STR: ---

Unbox OSR Value before preheader (1.82 KB, patch)
2012-01-07 19:27 PST, Nicolas B. Pierron [:nbp]
sstangl: review+
bhackett1024: review+
Details | Diff | Splinter Review

Description User image Nicolas B. Pierron [:nbp] 2012-01-02 15:54:57 PST
OSR entry point are currently generating MIRType_Value.  The problem is that OSR will be merged with other entry points for which we may have specialized the type.  Phi nodes of the loop header are then discarding the most specialized value and keep the MIRType_Value instead.  Thus the loop will have to unbox/box at each loop iteration.

We cannot rely on the ArgTypes and ThisTypes because they refer to the function entry and not to the loop header.

MethodJIT stores a vector of type for arg/local slots (naming ActiveFrame::varTypes), one similar solution for IonMonkey would be to re-use the slots types of any other entry point (MBasicBlock) of the loop, to produce fallible unboxing for OSR entry point.
Comment 1 User image Nicolas B. Pierron [:nbp] 2012-01-07 19:27:40 PST
Created attachment 586749 [details] [diff] [review]
Unbox OSR Value before preheader

Copy types from the main-line as fallible assumptions for OSR entry-points.
Comment 2 User image Sean Stangl [:sstangl] 2012-01-09 16:29:35 PST
Comment on attachment 586749 [details] [diff] [review]
Unbox OSR Value before preheader

Review of attachment 586749 [details] [diff] [review]:

Looks good.
Comment 3 User image Nicolas B. Pierron [:nbp] 2012-01-09 17:48:03 PST

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