Closed
Bug 450234
Opened 17 years ago
Closed 17 years ago
TM: Flag used stack values and unbox/box only those into the native frame.
Categories
(Core :: JavaScript Engine, enhancement)
Tracking
()
RESOLVED
FIXED
People
(Reporter: gal, Assigned: gal)
References
Details
Attachments
(1 file)
|
7.89 KB,
patch
|
Details | Diff | Splinter Review |
| Assignee | ||
Comment 1•17 years ago
|
||
Attached is an experimental patch to not unbox / box slots that are never used on the trace. This turns out to be probably more difficult that we thought. By flagging unused values in the incoming type map we ignore certain type mismatches, i.e. an unused slot is int now, even though initially we recorded it as undefined. This means that all side exit maps of the primary trace say "undefined" for this type, whereas the new trace we are attaching now sets all values for that slot to int. Short of any ingenious idea by shaver on how to fix this, its seems necessary to specialize traces for all values they MIGHT use, not all values they do CURRENTLY use. Block-scope let to the rescue!
Assignee: general → gal
Status: NEW → ASSIGNED
| Assignee | ||
Updated•17 years ago
|
Severity: normal → enhancement
Comment 2•17 years ago
|
||
I'm going to try to solve the uninitialized hoisted var problem for good.
In the mean time, why not make the type stability checker treat undefined as uninitialized, always, and make the initialized type win? You'd need to generate import code that adapts to the type evolving away from undefined, somehow (haven't looked at this patch yet) but that seems doable.
/be
| Assignee | ||
Comment 4•17 years ago
|
||
This seems to be a no-go. We will try multiple trees per entry point instead.
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
Updated•17 years ago
|
Flags: in-testsuite-
Flags: in-litmus-
You need to log in
before you can comment on or make changes to this bug.
Description
•