Closed Bug 1640300 Opened 5 years ago Closed 5 years ago

Warp: Transpile call/construct of scripted functions

Categories

(Core :: JavaScript Engine: JIT, task)

task

Tracking

()

RESOLVED FIXED
mozilla78
Tracking Status
firefox78 --- fixed

People

(Reporter: evilpies, Assigned: evilpies)

References

Details

Attachments

(3 files)

No description provided.

Depends on D76558

The final patch still has some XXX comments that need a second look, but I think nothing that is really a big concern. jit-tests seem to pass now.

The first patch is mostly concerned with trying to make sure we don't access JSFunction flags off-main thread. For that purposes I introduced a new CacheIR opcode GuardSpecificFunction, that we use to hold the nargs and flags besides the actual JSFunction pointer.

The actual code for scripted calls in WarpBuilderShared::makeCall is mostly borrowed from IonBuilder::makeCallHelper. We are still missing the code for optimizing |this| creation. There are also probably some minor optimization opportunities: Even if we don't have a monomorphic JSFunction target, we know if this is a native/scripted call. We could probabaly do disableArgCheck considering we don't have types, maybe this already happens though.

Blocks: 1640476
Pushed by evilpies@gmail.com: https://hg.mozilla.org/integration/autoland/rev/7ec7ea33770d Construct WrappedFunction based on new function metadata stored in CacheIR r=jandem https://hg.mozilla.org/integration/autoland/rev/26347a69e6d5 Factor out WarpCacheIRTranspiler::emitCallFunction r=jandem https://hg.mozilla.org/integration/autoland/rev/8697046d90f6 Transpile scripted calls r=jandem
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: