0
0
Fork 0
mirror of https://github.com/denoland/rusty_v8.git synced 2025-03-09 13:38:51 -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);
let value_deserializer_impl =
value_deserializer_heap.value_deserializer_impl.as_mut();
match value_deserializer_impl
.read_host_object(scope, &value_deserializer_heap.cxx_value_deserializer)
{
match value_deserializer_impl.read_host_object(
scope,
&mut value_deserializer_heap.cxx_value_deserializer,
) {
None => std::ptr::null(),
Some(x) => x.as_non_null().as_ptr(),
}
@ -153,7 +154,7 @@ pub trait ValueDeserializerImpl {
fn read_host_object<'s>(
&mut self,
scope: &mut HandleScope<'s>,
value_deserializer: &dyn ValueDeserializerHelper,
value_deserializer: &mut dyn ValueDeserializerHelper,
) -> Option<Local<'s, Object>> {
let msg =
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(
scope,
object,
&value_serializer_heap.cxx_value_serializer,
&mut value_serializer_heap.cxx_value_serializer,
))
}
@ -215,7 +215,7 @@ pub trait ValueSerializerImpl {
&mut self,
scope: &mut HandleScope<'s>,
object: Local<'s, Object>,
value_serializer: &dyn ValueSerializerHelper,
value_serializer: &mut dyn ValueSerializerHelper,
) -> Option<bool> {
let msg =
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)
}
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> {
@ -4304,6 +4314,16 @@ impl<'a> v8::ValueDeserializerImpl for Custom1Value<'a> {
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]