aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings
diff options
context:
space:
mode:
authorRahul Sharma <rsconceptx@gmail.com>2016-08-24 23:22:02 +0530
committerRahul Sharma <rsconceptx@gmail.com>2016-09-07 12:07:36 +0530
commit9dcb7348a2c69be69ae8284d56715177713091d2 (patch)
tree7890823d9280440d7db7b762905a9b060a0a7f93 /components/script/dom/bindings
parent0996b38ade7e2fe368ad7bd21ba8cf9a48d8f866 (diff)
downloadservo-9dcb7348a2c69be69ae8284d56715177713091d2.tar.gz
servo-9dcb7348a2c69be69ae8284d56715177713091d2.zip
store senders instead of buffering messages
Diffstat (limited to 'components/script/dom/bindings')
-rw-r--r--components/script/dom/bindings/structuredclone.rs14
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