aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js
diff options
context:
space:
mode:
authorGravatar Derrick Farris <mr.dcfarris@gmail.com> 2023-02-11 22:20:25 -0600
committerGravatar GitHub <noreply@github.com> 2023-02-11 20:20:25 -0800
commit9eba1e0e3fbd9ba80f7cac4a74c860e35335d86e (patch)
tree80143fe8f450c62e1a7802fabb78a4ee1f35285e /src/bun.js
parent675529bd0cc7f7753b1d33cf0f14d945bd850654 (diff)
downloadbun-9eba1e0e3fbd9ba80f7cac4a74c860e35335d86e.tar.gz
bun-9eba1e0e3fbd9ba80f7cac4a74c860e35335d86e.tar.zst
bun-9eba1e0e3fbd9ba80f7cac4a74c860e35335d86e.zip
[WIP] feat(napi): add `napi-fatal-exception` (#2054)
* feat(napi): add `napi-fatal-exception` * fix(napi): fatal_exception - add symbol to list, don't optimize away
Diffstat (limited to 'src/bun.js')
-rw-r--r--src/bun.js/bindings/napi.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/bun.js/bindings/napi.cpp b/src/bun.js/bindings/napi.cpp
index d42ee9da1..574224939 100644
--- a/src/bun.js/bindings/napi.cpp
+++ b/src/bun.js/bindings/napi.cpp
@@ -967,6 +967,21 @@ extern "C" napi_status napi_get_and_clear_last_exception(napi_env env,
return napi_ok;
}
+extern "C" napi_status napi_fatal_exception(napi_env env,
+ napi_value err)
+{
+ auto globalObject = toJS(env);
+ JSC::JSValue value = JSC::JSValue::decode(reinterpret_cast<JSC::EncodedJSValue>(err));
+ JSC::JSObject* obj = value.getObject();
+ if (UNLIKELY(obj == nullptr || !obj->isErrorInstance())) {
+ return napi_invalid_arg;
+ }
+
+ Bun__reportUnhandledError(globalObject, JSValue::encode(value));
+
+ return napi_ok;
+}
+
extern "C" napi_status napi_throw(napi_env env, napi_value error)
{
auto globalObject = toJS(env);