diff --git a/doc/api/n-api.md b/doc/api/n-api.md index 35ad1e71a3e1ff..adac289c82e77b 100644 --- a/doc/api/n-api.md +++ b/doc/api/n-api.md @@ -2267,6 +2267,7 @@ typedef enum { napi_float64_array, napi_bigint64_array, napi_biguint64_array, + napi_float16_array, } napi_typedarray_type; ``` diff --git a/src/js_native_api_types.h b/src/js_native_api_types.h index 43e7bb77ff94e7..7f6af506bfa08f 100644 --- a/src/js_native_api_types.h +++ b/src/js_native_api_types.h @@ -105,6 +105,7 @@ typedef enum { napi_float64_array, napi_bigint64_array, napi_biguint64_array, + napi_float16_array, } napi_typedarray_type; typedef enum { diff --git a/src/js_native_api_v8.cc b/src/js_native_api_v8.cc index 260a572ce71a82..6433b645a8ca07 100644 --- a/src/js_native_api_v8.cc +++ b/src/js_native_api_v8.cc @@ -3149,6 +3149,10 @@ napi_status NAPI_CDECL napi_create_typedarray(napi_env env, CREATE_TYPED_ARRAY( env, Uint32Array, 4, buffer, byte_offset, length, typedArray); break; + case napi_float16_array: + CREATE_TYPED_ARRAY( + env, Float16Array, 2, buffer, byte_offset, length, typedArray); + break; case napi_float32_array: CREATE_TYPED_ARRAY( env, Float32Array, 4, buffer, byte_offset, length, typedArray); @@ -3203,6 +3207,8 @@ napi_status NAPI_CDECL napi_get_typedarray_info(napi_env env, *type = napi_int32_array; } else if (value->IsUint32Array()) { *type = napi_uint32_array; + } else if (value->IsFloat16Array()) { + *type = napi_float16_array; } else if (value->IsFloat32Array()) { *type = napi_float32_array; } else if (value->IsFloat64Array()) { diff --git a/test/js-native-api/test_typedarray/test.js b/test/js-native-api/test_typedarray/test.js index 3065ed30dd9984..25f293cbedfa72 100644 --- a/test/js-native-api/test_typedarray/test.js +++ b/test/js-native-api/test_typedarray/test.js @@ -41,8 +41,9 @@ assert.strictEqual(externalResult[2], 2); // Validate creation of all kinds of TypedArrays const buffer = new ArrayBuffer(128); const arrayTypes = [ Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, - Uint16Array, Int32Array, Uint32Array, Float32Array, - Float64Array, BigInt64Array, BigUint64Array ]; + Uint16Array, Int32Array, Uint32Array, Float16Array, + Float32Array, Float64Array, BigInt64Array, + BigUint64Array ]; arrayTypes.forEach((currentType) => { const template = Reflect.construct(currentType, buffer);