[WebAssembly] Inspector's DebuggerCallFrame should be aware of Wasm frames
authortzagallo@apple.com <tzagallo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Nov 2019 00:37:52 +0000 (00:37 +0000)
committertzagallo@apple.com <tzagallo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Nov 2019 00:37:52 +0000 (00:37 +0000)
https://bugs.webkit.org/show_bug.cgi?id=203925

Reviewed by Mark Lam.

The DebuggerCallFrame checks for CallFrame::codeBlock to determine if it the current frame is a
valid JS frame, but since the Wasm interpreter stores the Wasm::FunctionCodeBlock to this slot,
that check is not sufficient. Add an extra check for CalleeBits::isWasm.

* debugger/DebuggerCallFrame.cpp:
(JSC::DebuggerCallFrame::sourceIDForCallFrame):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@252216 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp

index a174bde..a670d66 100644 (file)
@@ -1,3 +1,17 @@
+2019-11-07  Tadeu Zagallo  <tzagallo@apple.com>
+
+        [WebAssembly] Inspector's DebuggerCallFrame should be aware of Wasm frames
+        https://bugs.webkit.org/show_bug.cgi?id=203925
+
+        Reviewed by Mark Lam.
+
+        The DebuggerCallFrame checks for CallFrame::codeBlock to determine if it the current frame is a
+        valid JS frame, but since the Wasm interpreter stores the Wasm::FunctionCodeBlock to this slot,
+        that check is not sufficient. Add an extra check for CalleeBits::isWasm.
+
+        * debugger/DebuggerCallFrame.cpp:
+        (JSC::DebuggerCallFrame::sourceIDForCallFrame):
+
 2019-11-07  Devin Rousso  <drousso@apple.com>
 
         Web Inspector: REGRESSION(r250087): inspector/model/remote-object.html is timing out
index 015d19e..3258faa 100644 (file)
@@ -320,7 +320,7 @@ SourceID DebuggerCallFrame::sourceIDForCallFrame(CallFrame* callFrame)
     if (!callFrame)
         return noSourceID;
     CodeBlock* codeBlock = callFrame->codeBlock();
-    if (!codeBlock)
+    if (!codeBlock || callFrame->callee().isWasm())
         return noSourceID;
     return codeBlock->ownerExecutable()->sourceID();
 }