diff options
author | 2023-02-11 22:20:25 -0600 | |
---|---|---|
committer | 2023-02-11 20:20:25 -0800 | |
commit | 9eba1e0e3fbd9ba80f7cac4a74c860e35335d86e (patch) | |
tree | 80143fe8f450c62e1a7802fabb78a4ee1f35285e /src/bun.js | |
parent | 675529bd0cc7f7753b1d33cf0f14d945bd850654 (diff) | |
download | bun-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.cpp | 15 |
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); |