summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDenys Otrishko <shishugi@gmail.com>2019-11-23 23:08:11 +0200
committerAnna Henningsen <anna@addaleax.net>2019-11-28 15:15:36 +0100
commita1cbbd1da6d7ea9fbdbdabba6ac78b2b4cef9621 (patch)
tree65d062fb499e04babcadfaacab2a9f9fa2f67d83 /src
parent15146e6f3743e3df5cff8fd04677fe38efc91c94 (diff)
downloadandroid-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.h4
-rw-r--r--src/js_native_api_v8.cc15
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);
+}