From 9eba1e0e3fbd9ba80f7cac4a74c860e35335d86e Mon Sep 17 00:00:00 2001 From: Derrick Farris Date: Sat, 11 Feb 2023 22:20:25 -0600 Subject: [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 --- src/bun.js/bindings/napi.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/bun.js/bindings/napi.cpp') 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(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); -- cgit v1.2.3