Closed Bug 787292 Opened 12 years ago Closed 12 years ago

IonMonkey: Faster x64 boxed loads/stores

Categories

(Core :: JavaScript Engine, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: sstangl, Unassigned)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

Attached patch patchSplinter Review
It's faster to perform 32-bit loads/stores than 64-bit loads/stores plus boxing overhead. This patch does the former where possible, equalizing perf with x86 on some microbenchmark roughly equivalent to bitwise-and.
Attachment #657106 - Flags: review?(dvander)
Comment on attachment 657106 [details] [diff] [review]
patch

Review of attachment 657106 [details] [diff] [review]:
-----------------------------------------------------------------

Nice catch.

::: js/src/ion/x64/MacroAssembler-x64.h
@@ +83,5 @@
>      }
>  
> +    // Refers to the upper 32 bits of a 64-bit Value operand.
> +    // On x86_64, the upper 32 bits do not necessarily only contain the type.
> +    Operand ToUpper32(Operand base) {

static inline on these three
Attachment #657106 - Flags: review?(dvander) → review+
http://hg.mozilla.org/projects/ionmonkey/rev/5059a4152b84
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
One small issue here: you're failing a hundred tests on Win64. Unfortunately, those turn purple instead of orange on tbpl...
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Depends on: 787735
http://hg.mozilla.org/projects/ionmonkey/rev/cb0450dcc3a3

Backed out to debug later when I have Windows around. The only probable source of failure is MSVC++ doing something stupid with the following function:

> uint32_t Upper32Of(JSValueShiftedTag tag) { // 64-bit input
>     return (uint32_t)(tag >> 32);
> }
http://hg.mozilla.org/projects/ionmonkey/rev/3fa0ad8ab5db

Passed tryserver. MSVC++ apparently doesn't do sane things when you shift 64-bit datatypes.
Status: REOPENED → RESOLVED
Closed: 12 years ago12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.