Closed Bug 1636916 Opened 3 years ago Closed 3 years ago

Optimize branchValueIsNurseryCell

Categories

(Core :: JavaScript Engine: JIT, task)

task
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla78
Tracking Status
firefox78 --- fixed

People

(Reporter: jandem, Assigned: jandem)

References

(Blocks 1 open bug)

Details

Attachments

(4 files)

Instead of checking for each of object/string/bigint, we can probably do better now by checking ValueLowerInclShiftedGCThingTag

Also add ValueOperand overloads on 64-bit platforms.

A later patch will also call this for the post barrier.

It's more efficient now to check for all GC things with a single branch instead of
checking for object/string/BigInt separately. This generates more compact code with
fewer branches and is also more maintainable.

Depends on D74648

Now that branchValueIsNurseryCell is as efficient as branchValueIsNurseryObject
we no longer need branchValueIsNurseryObject.

Depends on D74649

Pushed by jdemooij@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/faf97dd5d454
part 1 - Rename unboxGCThingForPreBarrierTrampoline to unboxGCThingForGCBarrier. r=jonco
https://hg.mozilla.org/integration/autoland/rev/b1daef834436
part 2 - Add branchTestGCThing to the MacroAssembler. r=jonco
https://hg.mozilla.org/integration/autoland/rev/dbeae9786627
part 3 - Optimize branchValueIsNurseryCell using branchTestGCThing. r=jonco
https://hg.mozilla.org/integration/autoland/rev/af5b7413b762
part 4 - Use branchValueIsNurseryCell instead of branchValueIsNurseryObject. r=jonco
Blocks: 1638246
You need to log in before you can comment on or make changes to this bug.