@@ -52,6 +52,16 @@ StackFrame::StackFrame(VM& vm, JSCell* owner, JSCell* callee, CodeBlock* codeBlo
5252{
5353}
5454
55+ StackFrame::StackFrame (VM& vm, JSCell* owner, JSCell* callee, CodeBlock* codeBlock, BytecodeIndex bytecodeIndex, bool isAsyncFrame)
56+ : m_frameData(JSFrameData {
57+ WriteBarrier<JSCell>(vm, owner, callee),
58+ WriteBarrier<CodeBlock>(vm, owner, codeBlock),
59+ bytecodeIndex,
60+ isAsyncFrame
61+ })
62+ {
63+ }
64+
5565StackFrame::StackFrame (VM& vm, JSCell* owner, CodeBlock* codeBlock, BytecodeIndex bytecodeIndex)
5666 : m_frameData(JSFrameData {
5767 WriteBarrier<JSCell>(),
@@ -71,12 +81,12 @@ StackFrame::StackFrame(Wasm::IndexOrName indexOrName, size_t functionIndex)
7181{
7282}
7383
74- StackFrame::StackFrame (VM& vm, JSCell* owner, JSCell* callee, bool isAsyncFrameWithoutCodeBlock )
84+ StackFrame::StackFrame (VM& vm, JSCell* owner, JSCell* callee, bool isAsyncFrame )
7585 : m_frameData(JSFrameData {
7686 WriteBarrier<JSCell>(vm, owner, callee),
7787 WriteBarrier<CodeBlock>(),
7888 BytecodeIndex (),
79- isAsyncFrameWithoutCodeBlock
89+ isAsyncFrame
8090 })
8191{
8292}
@@ -147,7 +157,7 @@ String StackFrame::sourceURL(VM& vm) const
147157{
148158 return WTF::switchOn (m_frameData,
149159 [&vm, this ](const JSFrameData& jsFrame) -> String {
150- if (jsFrame. m_isAsyncFrameWithoutCodeBlock ) {
160+ if (isAsyncFrameWithoutCodeBlock () ) {
151161 ASSERT (jsFrame.callee );
152162 ASSERT (!jsFrame.codeBlock );
153163 JSFunction* calleeFn = jsDynamicCast<JSFunction*>(jsFrame.callee .get ());
@@ -171,7 +181,7 @@ String StackFrame::sourceURLStripped(VM& vm) const
171181{
172182 return WTF::switchOn (m_frameData,
173183 [&vm, this ](const JSFrameData& jsFrame) -> String {
174- if (jsFrame. m_isAsyncFrameWithoutCodeBlock ) {
184+ if (isAsyncFrameWithoutCodeBlock () ) {
175185 ASSERT (jsFrame.callee );
176186 ASSERT (!jsFrame.codeBlock );
177187 JSFunction* calleeFn = jsDynamicCast<JSFunction*>(jsFrame.callee .get ());
@@ -214,7 +224,14 @@ String StackFrame::functionName(VM& vm) const
214224 if (auto * executable = jsDynamicCast<FunctionExecutable*>(jsFrame.codeBlock ->ownerExecutable ()))
215225 name = executable->ecmaName ().impl ();
216226 }
217- return name.isNull () ? emptyString () : name;
227+
228+ if (name.isNull ())
229+ return emptyString ();
230+
231+ if (jsFrame.m_isAsyncFrame )
232+ return makeString (" async " _s, name);
233+
234+ return name;
218235 },
219236 [](const WasmFrameData& wasmFrame) -> String {
220237 if (wasmFrame.functionIndexOrName .isEmpty () || !wasmFrame.functionIndexOrName .nameSection ())
0 commit comments