Bug 70870 - Split DFGJITCodeGenerator::callOperation methods.
Summary: Split DFGJITCodeGenerator::callOperation methods.
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Gavin Barraclough
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-10-25 22:34 PDT by Gavin Barraclough
Modified: 2011-12-21 17:48 PST (History)
2 users (show)

See Also:


Attachments
The fix (42.38 KB, patch)
2011-10-25 22:45 PDT, Gavin Barraclough
no flags Details | Formatted Diff | Diff
fix (make the style bot happy) (42.38 KB, patch)
2011-10-25 22:49 PDT, Gavin Barraclough
fpizlo: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Gavin Barraclough 2011-10-25 22:34:08 PDT
The DFGJITCodeGenerator currently contains two sets of callOperation methods.  One set works with the JSVALUE64 value representation and passes arguments in registers (suitable for use on x86-64), and one set works with the JSVALUE32_64 value representation and passes arguments in memory  (suitable for use on x86).  By refactoring out the representation and calling convention specific aspects of the code we can also configure the DFG JIT to operator on platforms that use the JSVALUE32_64 value representation but pass arguments in registers.

On platforms supported by the JIT, the payload precedes the tag of a value in argument/result ordering, as such, in order to make the setupResults method generally applicable to return the results of a function that are returned in two registers, the ordering of arguments to this function has been reversed - as is the ordering of augments passed to setupArguments methods, with respect to the ordering with which they are passed in to callOperation.  This inconsistency will be resolved in a later change when we combine the pairs of arguments passed into callOperation, such that the function signatures can be made consistent across the two value representations (the callOperation methods will be passed a reference to a struct representing the JSValue temporary, this will consist of two gprs on 32_64 and one on 64).
Comment 1 Gavin Barraclough 2011-10-25 22:45:48 PDT
Created attachment 112451 [details]
The fix
Comment 2 WebKit Review Bot 2011-10-25 22:47:21 PDT
Attachment 112451 [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/DFGJITCodeGenerator.h:958:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Gavin Barraclough 2011-10-25 22:49:39 PDT
Created attachment 112452 [details]
fix (make the style bot happy)
Comment 4 Eric Seidel (no email) 2011-12-21 14:30:31 PST
Attachment 112452 [details] was posted by a committer and has review+, assigning to Gavin Barraclough for commit.
Comment 5 Gavin Barraclough 2011-12-21 17:48:10 PST
Oooops, sorry - was fixed in r98431!