Bug 80365 - PredictNone is incorrectly treated as isDoublePrediction
Summary: PredictNone is incorrectly treated as isDoublePrediction
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-03-05 19:21 PST by Yuqiang Xian
Modified: 2012-03-05 23:04 PST (History)
2 users (show)

See Also:


Attachments
the patch (1.58 KB, patch)
2012-03-05 19:31 PST, Yuqiang Xian
fpizlo: review+
Details | Formatted Diff | Diff
Performance result (6.16 KB, text/plain)
2012-03-05 22:39 PST, Yuqiang Xian
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Yuqiang Xian 2012-03-05 19:21:46 PST
And also it is incorrectly treated as isFixedIndexedStorageObjectPrediction.
Comment 1 Yuqiang Xian 2012-03-05 19:31:53 PST
Created attachment 130269 [details]
the patch

Attention: One performance regression on SunSpider-bitops-nsieve-bits. The root cause is identified - In ToT, a dead/unused variable was marked as ForcedDouble simply because it has PredictNone (as we don't propagate the type information for the dead/unused variables), and is treated as a Double prediction - so OSR performed successfully (that unused variable actually happened to be an integer, see line 108 in DFGOSREntry.cpp). But with this bug fix, the OSR is failed because there's no type prediction for the unused variable. Separated bug will be filed against this.
Comment 2 Yuqiang Xian 2012-03-05 20:25:49 PST
(In reply to comment #1)
> Attention: One performance regression on SunSpider-bitops-nsieve-bits. The root cause is identified - In ToT, a dead/unused variable was marked as ForcedDouble simply because it has PredictNone (as we don't propagate the type information for the dead/unused variables), and is treated as a Double prediction - so OSR performed successfully (that unused variable actually happened to be an integer, see line 108 in DFGOSREntry.cpp). But with this bug fix, the OSR is failed because there's no type prediction for the unused variable. Separated bug will be filed against this.

bug 80371 is created for this specific issue.
Comment 3 Filip Pizlo 2012-03-05 22:13:45 PST
Does the performance regression go away now?
Comment 4 Yuqiang Xian 2012-03-05 22:39:19 PST
Created attachment 130296 [details]
Performance result

Yes, there's no performance regression with this change after bug 80371 is fixed. Please see the attached result.
Comment 5 Yuqiang Xian 2012-03-05 23:04:26 PST
Landed as http://trac.webkit.org/changeset/109865