0
0
Fork 0
mirror of https://github.com/denoland/rusty_v8.git synced 2025-03-09 21:47:00 -04:00

fix: pass serializer helpers as mut refs (#712)

They are only useful in read_host_object and write_host_object if
the helpers are available as a mut ref.
This commit is contained in:
Luca Casonato 2021-06-24 15:59:03 +02:00 committed by GitHub
parent ed106ac9b3
commit cfa5d7060f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 6 deletions

View file

@ -35,9 +35,10 @@ pub unsafe extern "C" fn v8__ValueDeserializer__Delegate__ReadHostObject(
&mut crate::scope::CallbackScope::new(value_deserializer_heap.context); &mut crate::scope::CallbackScope::new(value_deserializer_heap.context);
let value_deserializer_impl = let value_deserializer_impl =
value_deserializer_heap.value_deserializer_impl.as_mut(); value_deserializer_heap.value_deserializer_impl.as_mut();
match value_deserializer_impl match value_deserializer_impl.read_host_object(
.read_host_object(scope, &value_deserializer_heap.cxx_value_deserializer) scope,
{ &mut value_deserializer_heap.cxx_value_deserializer,
) {
None => std::ptr::null(), None => std::ptr::null(),
Some(x) => x.as_non_null().as_ptr(), Some(x) => x.as_non_null().as_ptr(),
} }
@ -153,7 +154,7 @@ pub trait ValueDeserializerImpl {
fn read_host_object<'s>( fn read_host_object<'s>(
&mut self, &mut self,
scope: &mut HandleScope<'s>, scope: &mut HandleScope<'s>,
value_deserializer: &dyn ValueDeserializerHelper, value_deserializer: &mut dyn ValueDeserializerHelper,
) -> Option<Local<'s, Object>> { ) -> Option<Local<'s, Object>> {
let msg = let msg =
String::new(scope, "Deno deserializer: read_host_object not implemented") String::new(scope, "Deno deserializer: read_host_object not implemented")

View file

@ -58,7 +58,7 @@ pub unsafe extern "C" fn v8__ValueSerializer__Delegate__WriteHostObject(
MaybeBool::from(value_serializer_impl.write_host_object( MaybeBool::from(value_serializer_impl.write_host_object(
scope, scope,
object, object,
&value_serializer_heap.cxx_value_serializer, &mut value_serializer_heap.cxx_value_serializer,
)) ))
} }
@ -215,7 +215,7 @@ pub trait ValueSerializerImpl {
&mut self, &mut self,
scope: &mut HandleScope<'s>, scope: &mut HandleScope<'s>,
object: Local<'s, Object>, object: Local<'s, Object>,
value_serializer: &dyn ValueSerializerHelper, value_serializer: &mut dyn ValueSerializerHelper,
) -> Option<bool> { ) -> Option<bool> {
let msg = let msg =
String::new(scope, "Deno serializer: write_host_object not implemented") String::new(scope, "Deno serializer: write_host_object not implemented")

View file

@ -4289,6 +4289,16 @@ impl<'a> v8::ValueSerializerImpl for Custom1Value<'a> {
)); ));
Some((self.array_buffers.len() as u32) - 1) Some((self.array_buffers.len() as u32) - 1)
} }
fn write_host_object<'s>(
&mut self,
_scope: &mut v8::HandleScope<'s>,
_object: v8::Local<'s, v8::Object>,
value_serializer: &mut dyn v8::ValueSerializerHelper,
) -> Option<bool> {
value_serializer.write_uint64(1);
None
}
} }
impl<'a> v8::ValueDeserializerImpl for Custom1Value<'a> { impl<'a> v8::ValueDeserializerImpl for Custom1Value<'a> {
@ -4304,6 +4314,16 @@ impl<'a> v8::ValueDeserializerImpl for Custom1Value<'a> {
backing_store, backing_store,
)) ))
} }
fn read_host_object<'s>(
&mut self,
_scope: &mut v8::HandleScope<'s>,
value_deserializer: &mut dyn v8::ValueDeserializerHelper,
) -> Option<v8::Local<'s, v8::Object>> {
let mut value = 0;
value_deserializer.read_uint64(&mut value);
None
}
} }
#[test] #[test]