mirror of
https://github.com/servo/servo
synced 2026-05-08 16:12:15 +02:00
in the [SpiderMonkey Debugger API](https://firefox-source-docs.mozilla.org/js/Debugger/), hooks like [onNewGlobalObject()](https://firefox-source-docs.mozilla.org/js/Debugger/Debugger.html#onnewglobalobject-global) use an AutoDebuggerJobQueueInterruption to [switch to a new microtask queue](b14aebff23/mozjs-sys/mozjs/js/src/debugger/Debugger.cpp (L2834-L2841)) and avoid clobbering the debuggee’s microtask queue. this in turn relies on JobQueue::runJobs(), which is [not yet implemented in RustJobQueue](b14aebff23/mozjs-sys/src/jsglue.cpp (L76-L78)). this patch bumps mozjs to servo/mozjs#597, which implements [runJobs()](b14aebff23/mozjs-sys/mozjs/js/public/Promise.h (L61-L76)) for RustJobQueue by calling into Servo’s MicrotaskQueue::checkpoint() via a new function in JobQueueTraps. SpiderMonkey [does not own external job queues](b14aebff23/mozjs-sys/mozjs/js/public/Promise.h (L117-L123)), so the lifetime of these queues is managed in Servo, where they are stored in a Vec-based stack. stack-like behaviour is adequate for SpiderMonkey’s save and restore patterns, as far as we can tell, but we’ve added an assertion just in case. Testing: manually tested working in devtools debugger patch (#37667), where it will undergo automated tests Signed-off-by: Delan Azabani <dazabani@igalia.com> Co-authored-by: atbrakhi <atbrakhi@igalia.com>
45 KiB
45 KiB