summaryrefslogtreecommitdiff
path: root/core/bindings.rs
diff options
context:
space:
mode:
Diffstat (limited to 'core/bindings.rs')
-rw-r--r--core/bindings.rs20
1 files changed, 8 insertions, 12 deletions
diff --git a/core/bindings.rs b/core/bindings.rs
index 6fe21b53b..c6882ed5a 100644
--- a/core/bindings.rs
+++ b/core/bindings.rs
@@ -9,8 +9,6 @@ use v8::MapFnTo;
use std::convert::TryFrom;
use std::option::Option;
-use std::ptr;
-use std::slice;
lazy_static! {
pub static ref EXTERNAL_REFERENCES: v8::ExternalReferences =
@@ -186,9 +184,10 @@ pub fn boxed_slice_to_uint8array<'sc>(
) -> v8::Local<'sc, v8::Uint8Array> {
assert!(!buf.is_empty());
let buf_len = buf.len();
- let backing_store =
- unsafe { &mut v8::ArrayBuffer::new_backing_store_from_boxed_slice(buf) };
- let ab = v8::ArrayBuffer::new_with_backing_store(scope, backing_store);
+ let backing_store = v8::ArrayBuffer::new_backing_store_from_boxed_slice(buf);
+ let mut backing_store_shared = backing_store.make_shared();
+ let ab =
+ v8::ArrayBuffer::with_backing_store(scope, &mut backing_store_shared);
v8::Uint8Array::new(ab, 0, buf_len).expect("Failed to create UintArray8")
}
@@ -397,13 +396,10 @@ fn send(
let control = match v8::Local::<v8::ArrayBufferView>::try_from(args.get(1)) {
Ok(view) => {
- let mut backing_store = view.buffer().unwrap().get_backing_store();
- let backing_store_ptr = backing_store.data() as *mut _ as *mut u8;
- let view_ptr = unsafe { backing_store_ptr.add(view.byte_offset()) };
- let view_len = view.byte_length();
- unsafe { slice::from_raw_parts(view_ptr, view_len) }
+ let backing_store = view.buffer().unwrap().get_backing_store();
+ unsafe { &**backing_store.get() }
}
- Err(..) => unsafe { slice::from_raw_parts(ptr::null(), 0) },
+ Err(..) => &[],
};
let zero_copy: Option<PinnedBuf> =
@@ -599,7 +595,7 @@ fn shared_getter(
// Lazily initialize the persistent external ArrayBuffer.
if deno_isolate.shared_ab.is_empty() {
- let ab = v8::SharedArrayBuffer::new_with_backing_store(
+ let ab = v8::SharedArrayBuffer::with_backing_store(
scope,
deno_isolate.shared.get_backing_store(),
);