Bug 99153 - x32 support of JavaScriptCore
: x32 support of JavaScriptCore
Status: NEW
: WebKit
JavaScriptCore
: 528+ (Nightly build)
: Unspecified Unspecified
: P2 Normal
Assigned To:
:
:
: 99154 100321 100450 101325
:
  Show dependency treegraph
 
Reported: 2012-10-12 02:20 PST by
Modified: 2013-04-07 01:08 PST (History)


Attachments
[future] patch (20.18 KB, patch)
2012-10-12 03:04 PST, Yuqiang Xian
no flags Review Patch | Details | Formatted Diff | Diff
x32 jit patch (20.65 KB, patch)
2012-10-19 08:24 PST, Yuqiang Xian
no flags Review Patch | Details | Formatted Diff | Diff
x32 LLInt patch (81.07 KB, patch)
2012-10-19 08:38 PST, Yuqiang Xian
no flags Review Patch | Details | Formatted Diff | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2012-10-12 02:20:25 PST
This is the meta bug to track the x32 support of JavaScriptCore.

There's a new x32 ABI - a 32-bit psABI for x86-64 with 32-bit pointer size. It tries to leverage the advantage of more registers and IP relative addressing from x64 and the advantage of smaller memory footprint from IA32. More details of the x32 ABI can be found here: https://sites.google.com/site/x32abi/.

The Linux kernel supports x32 since 3.4, and the commonly used development tools and libraries are getting in the x32 support. Also more details about current status is available in the above link.

We also want JavaScriptCore to support x32.
------- Comment #1 From 2012-10-12 02:57:30 PST -------
The first step is to refactor the MacroAssembler interfaces, especially to differentiate the operations on pointers from the operations on 64-bit integers (e.g., the JSValues), as on x32 the pointer size is 4 bytes.

Bug #99154 is created for the refactoring work.
------- Comment #2 From 2012-10-12 03:04:43 PST -------
Created an attachment (id=168387) [details]
[future] patch

This is the "future" patch to add the x32 support - assuming that the refactoring work in bug #99154 is taken in. (thus cannot be applied without the 99154 patch.)
I pasted it here just for you to have a rough idea what it may look like if we want to add the x32 support.

The LLInt is not supported yet. While it's on the plan.
------- Comment #3 From 2012-10-19 08:24:09 PST -------
Created an attachment (id=169623) [details]
x32 jit patch

*Not* asking for a detailed review. 
Uploading mainly for back-up purpose.
------- Comment #4 From 2012-10-19 08:38:37 PST -------
Created an attachment (id=169626) [details]
x32 LLInt patch

For back-up purpose now.

Add the x32 backend for the low level interpreter. It now together with the JITs pass all the javascriptcore tests and major benchmarks on x32. We may need more efforts on the CLoop backend.

We may need to split the patch as what we've done for the x32 support of the JIT compilers (bug #99154), i.e., one (or more) for general offlineasm and LLInt refactoring, and another one for x32 *specific* change.
------- Comment #5 From 2012-10-24 22:03:33 PST -------
Bug #100321 is created for the LLInt64 refactoring work. Adding the dependency.
------- Comment #6 From 2012-11-06 16:51:03 PST -------
(From update of attachment 169623 [details])
obsolete this patch. The correct one is in bug #100450.
------- Comment #7 From 2012-11-06 16:51:38 PST -------
(From update of attachment 169626 [details])
obsolete this patch. The correct one is in bug #101325.