Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: ea264dedeefc81886909cc6bfbda0b20b578a098
https://github.com/WebKit/WebKit/commit/ea264dedeefc81886909cc6bfbda0b20b578a098
Author: Yusuke Suzuki <[email protected]>
Date: 2026-01-01 (Thu, 01 Jan 2026)
Changed paths:
M Source/JavaScriptCore/builtins/AsyncGeneratorPrototype.js
M Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp
M Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h
M Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp
M Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
M Source/JavaScriptCore/runtime/JSAsyncGenerator.cpp
M Source/JavaScriptCore/runtime/JSAsyncGenerator.h
M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
M Source/JavaScriptCore/runtime/JSMicrotask.cpp
Log Message:
-----------
[JSC] Embed SuspendReason into State in JSAsyncGenerator
https://bugs.webkit.org/show_bug.cgi?id=304809
rdar://167378584
Reviewed by Sosuke Suzuki.
We are having SuspendReason and State in JSAsyncGenerator. But this is
not necessary: SuspendReason is only effectively used when State is
pointing at yield or await's number. Thus we can embed this information
into State too. We compute,
state = (yield-point << 1) | await-or-yield
and just store State into JSAsyncGenerator. This significantly
simplifies JS and C++ code and remove one slot in JSAsyncGenerator.
Also we change our queueing mechanism in JSAsyncGenerator. Use
JSPromiseReaction for doubly-linked list to shrink
sizeof(JSAsyncGenerator).
* Source/JavaScriptCore/builtins/AsyncGeneratorPrototype.js:
(linkTimeConstant.asyncGeneratorResumeNext):
(next):
(return):
(throw):
* Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.cpp:
(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):
* Source/JavaScriptCore/bytecode/BytecodeIntrinsicRegistry.h:
* Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitYieldPoint):
* Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:
(JSC::asyncGeneratorInternalFieldIndex):
* Source/JavaScriptCore/runtime/JSAsyncGenerator.cpp:
(JSC::JSAsyncGenerator::enqueue):
* Source/JavaScriptCore/runtime/JSAsyncGenerator.h:
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/JSMicrotask.cpp:
(JSC::isSuspendYieldState):
(JSC::asyncGeneratorBodyCall):
(JSC::asyncGeneratorResumeNext):
(JSC::asyncGeneratorYieldAwaited):
(JSC::asyncGeneratorBodyCallNormal):
(JSC::asyncGeneratorBodyCallReturn):
(JSC::asyncGeneratorResumeNextReturn):
(JSC::doAsyncGeneratorBodyCall): Deleted.
Canonical link: https://commits.webkit.org/305032@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications