aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/ErrorStackTrace.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/bun.js/bindings/ErrorStackTrace.cpp')
-rw-r--r--src/bun.js/bindings/ErrorStackTrace.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/bun.js/bindings/ErrorStackTrace.cpp b/src/bun.js/bindings/ErrorStackTrace.cpp
index a8c5b65d8..be20f7737 100644
--- a/src/bun.js/bindings/ErrorStackTrace.cpp
+++ b/src/bun.js/bindings/ErrorStackTrace.cpp
@@ -12,6 +12,7 @@
#include <JavaScriptCore/JSCInlines.h>
#include <JavaScriptCore/ErrorInstance.h>
#include <JavaScriptCore/StackVisitor.h>
+#include <JavaScriptCore/NativeCallee.h>
#include <wtf/IterationStatus.h>
using namespace JSC;
@@ -139,9 +140,18 @@ JSCStackFrame::JSCStackFrame(JSC::VM& vm, JSC::StackVisitor& visitor)
m_callFrame = visitor->callFrame();
// Based on JSC's GetStackTraceFunctor (Interpreter.cpp)
- if (visitor->isWasmFrame()) {
- m_wasmFunctionIndexOrName = visitor->wasmFunctionIndexOrName();
- m_isWasmFrame = true;
+ if (visitor->isNativeCalleeFrame()) {
+ auto* nativeCallee = visitor->callee().asNativeCallee();
+ switch (nativeCallee->category()) {
+ case NativeCallee::Category::Wasm: {
+ m_wasmFunctionIndexOrName = visitor->wasmFunctionIndexOrName();
+ m_isWasmFrame = true;
+ break;
+ }
+ case NativeCallee::Category::InlineCache: {
+ break;
+ }
+ }
} else if (!!visitor->codeBlock() && !visitor->codeBlock()->unlinkedCodeBlock()->isBuiltinFunction()) {
m_codeBlock = visitor->codeBlock();
m_bytecodeIndex = visitor->bytecodeIndex();