diff options
author | Rahul Sharma <rsconceptx@gmail.com> | 2016-08-24 23:22:02 +0530 |
---|---|---|
committer | Rahul Sharma <rsconceptx@gmail.com> | 2016-09-07 12:07:36 +0530 |
commit | 9dcb7348a2c69be69ae8284d56715177713091d2 (patch) | |
tree | 7890823d9280440d7db7b762905a9b060a0a7f93 /components/script/dom/bindings/structuredclone.rs | |
parent | 0996b38ade7e2fe368ad7bd21ba8cf9a48d8f866 (diff) | |
download | servo-9dcb7348a2c69be69ae8284d56715177713091d2.tar.gz servo-9dcb7348a2c69be69ae8284d56715177713091d2.zip |
store senders instead of buffering messages
Diffstat (limited to 'components/script/dom/bindings/structuredclone.rs')
-rw-r--r-- | components/script/dom/bindings/structuredclone.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/components/script/dom/bindings/structuredclone.rs b/components/script/dom/bindings/structuredclone.rs index cb0fbce3092..1078ffcacc8 100644 --- a/components/script/dom/bindings/structuredclone.rs +++ b/components/script/dom/bindings/structuredclone.rs @@ -11,6 +11,7 @@ use js::jsapi::{HandleValue, MutableHandleValue}; use js::jsapi::{JSContext, JS_ReadStructuredClone, JS_STRUCTURED_CLONE_VERSION}; use js::jsapi::{JS_ClearPendingException, JS_WriteStructuredClone}; use libc::size_t; +use script_traits::DOMMessage; use std::ptr; use std::slice; @@ -46,15 +47,18 @@ impl StructuredCloneData { }) } - /// Converts a StructuredCloneData to Vec<u64> - pub fn move_to_arraybuffer(self) -> Vec<u64> { + /// Converts a StructuredCloneData to Vec<u8> for inter-thread sharing + pub fn move_to_arraybuffer(self) -> DOMMessage { unsafe { - slice::from_raw_parts(self.data, self.nbytes).to_vec() + DOMMessage(slice::from_raw_parts(self.data as *mut u8, self.nbytes).to_vec()) } } - /// Converts back to StructuredCloneData using a pointer and no of bytes - pub fn make_structured_clone(data: *mut u64, nbytes: size_t) -> StructuredCloneData { + /// Converts back to StructuredCloneData + pub fn make_structured_clone(data: DOMMessage) -> StructuredCloneData { + let DOMMessage(mut data) = data; + let nbytes = data.len(); + let data = data.as_mut_ptr() as *mut u64; StructuredCloneData { data: data, nbytes: nbytes |