summaryrefslogtreecommitdiff
path: root/cli/napi/util.rs
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2022-10-05 07:06:44 -0700
committerGitHub <noreply@github.com>2022-10-05 19:36:44 +0530
commit0b016a7fb8639ce49603c8c339539174b191a4b1 (patch)
treec511060d701db60ede0214b7280e89c5749bbe62 /cli/napi/util.rs
parent3a3a8484069c9c6955fcb83ea761f9f74638175a (diff)
feat(npm): implement Node API (#13633)
This PR implements the NAPI for loading native modules into Deno. Co-authored-by: Bartek IwaƄczuk <biwanczuk@gmail.com> Co-authored-by: DjDeveloper <43033058+DjDeveloperr@users.noreply.github.com> Co-authored-by: Ryan Dahl <ry@tinyclouds.org>
Diffstat (limited to 'cli/napi/util.rs')
-rw-r--r--cli/napi/util.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/cli/napi/util.rs b/cli/napi/util.rs
new file mode 100644
index 000000000..2dea03554
--- /dev/null
+++ b/cli/napi/util.rs
@@ -0,0 +1,23 @@
+// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
+
+use deno_runtime::deno_napi::*;
+use std::cell::Cell;
+
+unsafe fn get_backing_store_slice(
+ backing_store: &mut v8::SharedRef<v8::BackingStore>,
+ byte_offset: usize,
+ byte_length: usize,
+) -> &mut [u8] {
+ let cells: *const [Cell<u8>] =
+ &backing_store[byte_offset..byte_offset + byte_length];
+ let mut bytes = cells as *mut [u8];
+ &mut *bytes
+}
+
+pub fn get_array_buffer_ptr(ab: v8::Local<v8::ArrayBuffer>) -> *mut u8 {
+ let mut backing_store = ab.get_backing_store();
+ let byte_length = ab.byte_length();
+ let mut slice =
+ unsafe { get_backing_store_slice(&mut backing_store, 0, byte_length) };
+ slice.as_mut_ptr()
+}