diff options
author | Denys Otrishko <shishugi@gmail.com> | 2019-11-23 23:08:11 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2019-11-28 15:15:36 +0100 |
commit | a1cbbd1da6d7ea9fbdbdabba6ac78b2b4cef9621 (patch) | |
tree | 65d062fb499e04babcadfaacab2a9f9fa2f67d83 /src | |
parent | 15146e6f3743e3df5cff8fd04677fe38efc91c94 (diff) | |
download | android-node-v8-a1cbbd1da6d7ea9fbdbdabba6ac78b2b4cef9621.tar.gz android-node-v8-a1cbbd1da6d7ea9fbdbdabba6ac78b2b4cef9621.tar.bz2 android-node-v8-a1cbbd1da6d7ea9fbdbdabba6ac78b2b4cef9621.zip |
n-api: implement napi_is_detached_arraybuffer
This implements ArrayBuffer#IsDetachedBuffer operation as per ECMAScript
specification Section 24.1.1.2 https://tc39.es/ecma262/#sec-isdetachedbuffer
Closes: https://github.com/nodejs/node/issues/29955
PR-URL: https://github.com/nodejs/node/pull/30613
Fixes: https://github.com/nodejs/node/issues/29955
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: David Carlier <devnexen@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/js_native_api.h | 4 | ||||
-rw-r--r-- | src/js_native_api_v8.cc | 15 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/js_native_api.h b/src/js_native_api.h index cf1596be80..150103348e 100644 --- a/src/js_native_api.h +++ b/src/js_native_api.h @@ -518,6 +518,10 @@ NAPI_EXTERN napi_status napi_get_instance_data(napi_env env, // ArrayBuffer detaching NAPI_EXTERN napi_status napi_detach_arraybuffer(napi_env env, napi_value arraybuffer); + +NAPI_EXTERN napi_status napi_is_detached_arraybuffer(napi_env env, + napi_value value, + bool* result); #endif // NAPI_EXPERIMENTAL EXTERN_C_END diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index 5c809e977a..05712afde0 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -3040,3 +3040,18 @@ napi_status napi_detach_arraybuffer(napi_env env, napi_value arraybuffer) { return napi_clear_last_error(env); } + +napi_status napi_is_detached_arraybuffer(napi_env env, + napi_value arraybuffer, + bool* result) { + CHECK_ENV(env); + CHECK_ARG(env, arraybuffer); + CHECK_ARG(env, result); + + v8::Local<v8::Value> value = v8impl::V8LocalValueFromJsValue(arraybuffer); + + *result = value->IsArrayBuffer() && + value.As<v8::ArrayBuffer>()->GetBackingStore()->Data() == nullptr; + + return napi_clear_last_error(env); +} |