TM: Generate better code for tag bit checking

RESOLVED WONTFIX

Status

()

Core
JavaScript Engine
RESOLVED WONTFIX
8 years ago
6 years ago

People

(Reporter: dvander, Unassigned)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

0x01513bfe in ?? ()
1: x/i $pc  0x1513bfe:	mov    eax,ecx
1: x/i $pc  0x1513c00:	and    eax,0x7
1: x/i $pc  0x1513c03:	cmp    eax,0x2
1: x/i $pc  0x1513c06:	sete   dl
1: x/i $pc  0x1513c09:	movzx  edx,dl

This looks like code to check JSVAL_IS_DOUBLE. It seems like we could do much better.

It's even worse when LIR_or is involved.
1: x/i $pc  0x1513c0c:	mov    eax,ecx
1: x/i $pc  0x1513c0e:	and    eax,0x1
1: x/i $pc  0x1513c11:	or     eax,edx
1: x/i $pc  0x1513c13:	test   eax,eax
1: x/i $pc  0x1513c15:	je     0x1523c34
Where in TM is this code generated?

Re comment 0:  the movzx seems unnecessary, ie. the sete could just generate into edx directly, no?.  Can you see other ways to improve it?

Comment 3

8 years ago
Yeah, we shouldn't or the result, just emit branches. I have a patch in my queue. I will also work on the lir inlining this week. BoxInt() is lame in general. It should be all lir to save the call overhead.
Obsolete with the removal of tracejit.
Status: NEW → RESOLVED
Last Resolved: 6 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.