Bug 64147 - DFG JIT does not implement prototype chain or list caching for get_by_id
Summary: DFG JIT does not implement prototype chain or list caching for get_by_id
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-07-07 22:09 PDT by Filip Pizlo
Modified: 2011-07-13 14:45 PDT (History)
1 user (show)

See Also:


Attachments
the patch (24.53 KB, patch)
2011-07-07 22:22 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (fix style) (24.53 KB, patch)
2011-07-07 23:29 PDT, Filip Pizlo
barraclough: review-
barraclough: commit-queue-
Details | Formatted Diff | Diff
the patch (21.74 KB, patch)
2011-07-13 11:29 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2011-07-07 22:09:54 PDT
The JSC JIT supports caching of prototype lists (if a get_by_id access may hit one of several prototypes) and chains (if a get_by_id access may hit a prototype at any depth in the prototype chain), as well as prototype chain lists (if a get_by_id access may hit one of several prototypes at varying depths in the prototype chain).  The DFG JIT supports prototype caching only, but should support prototype lists, chains, and chain lists to ensure good performance.
Comment 1 Filip Pizlo 2011-07-07 22:22:21 PDT
Created attachment 100071 [details]
the patch
Comment 2 WebKit Review Bot 2011-07-07 22:25:45 PDT
Attachment 100071 [details] did not pass style-queue:

Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'Source/JavaScriptCore/ChangeLog', u'Source..." exit_code: 1

Source/JavaScriptCore/dfg/DFGRepatch.cpp:400:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Filip Pizlo 2011-07-07 23:29:14 PDT
Created attachment 100079 [details]
the patch (fix style)
Comment 4 Gavin Barraclough 2011-07-08 01:54:22 PDT
Comment on attachment 100079 [details]
the patch (fix style)

View in context: https://bugs.webkit.org/attachment.cgi?id=100079&action=review

Sorry, just one minor style nit.

> Source/JavaScriptCore/dfg/DFGRepatch.cpp:225
> +        return false;

Please lose the { } here.
Comment 5 Filip Pizlo 2011-07-08 02:00:34 PDT
(In reply to comment #4)
> (From update of attachment 100079 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=100079&action=review
> 
> Sorry, just one minor style nit.
> 
> > Source/JavaScriptCore/dfg/DFGRepatch.cpp:225
> > +        return false;
> 
> Please lose the { } here.

Ah, right.  Thanks for catching that.  Will fix that.
Comment 6 Filip Pizlo 2011-07-13 11:29:19 PDT
Created attachment 100692 [details]
the patch

This patch subsumes https://bugs.webkit.org/show_bug.cgi?id=64077, in that the implementation of prototype chain and list caching involved redoing prototype caching.  I did it this way to make prototype caching, prototype chain caching, prototype list caching, and prototype list chain caching.
Comment 7 WebKit Review Bot 2011-07-13 14:44:57 PDT
Comment on attachment 100692 [details]
the patch

Clearing flags on attachment: 100692

Committed r90950: <http://trac.webkit.org/changeset/90950>
Comment 8 WebKit Review Bot 2011-07-13 14:45:01 PDT
All reviewed patches have been landed.  Closing bug.