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)

x86
macOS
enhancement
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: gal, Assigned: gal)

References

Details

Attachments

(1 file)

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
Severity: normal → enhancement
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
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
Flags: in-testsuite-
Flags: in-litmus-
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: