Skip to content
This repository was archived by the owner on Nov 12, 2022. It is now read-only.

Commit 3efd159

Browse files
author
bors-servo
authored
Auto merge of #438 - ferjm:issharedarraybuffer, r=jdm
Add function to tell whether a TypedArray underlying buffer is shared <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/rust-mozjs/438) <!-- Reviewable:end -->
2 parents 1376856 + 33fb3c9 commit 3efd159

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/typedarray.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ use jsapi::JS_GetFloat64ArrayData;
3131
use jsapi::JS_GetInt16ArrayData;
3232
use jsapi::JS_GetInt32ArrayData;
3333
use jsapi::JS_GetInt8ArrayData;
34+
use jsapi::JS_GetTypedArraySharedness;
3435
use jsapi::JS_GetUint16ArrayData;
3536
use jsapi::JS_GetUint32ArrayData;
3637
use jsapi::JS_GetUint8ArrayData;
@@ -206,6 +207,12 @@ impl<T: TypedArrayElement, S: JSObjectStorage> TypedArray<T, S> {
206207
let (pointer, length) = self.data();
207208
slice::from_raw_parts_mut(pointer, length as usize)
208209
}
210+
211+
/// Return a boolean flag which denotes whether the underlying buffer
212+
/// is a SharedArrayBuffer.
213+
pub fn is_shared(&self) -> bool {
214+
unsafe { JS_GetTypedArraySharedness(self.object.as_raw()) }
215+
}
209216
}
210217

211218
impl<T: TypedArrayElementCreator + TypedArrayElement, S: JSObjectStorage> TypedArray<T, S> {

tests/typedarray.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,5 +77,8 @@ fn typedarray() {
7777

7878
typedarray!(in(cx) let view: ArrayBufferView = rval.get());
7979
assert_eq!(view.unwrap().get_array_type(), Type::Uint32);
80+
81+
typedarray!(in(cx) let view: ArrayBufferView = rval.get());
82+
assert_eq!(view.unwrap().is_shared(), false);
8083
}
8184
}

0 commit comments

Comments
 (0)