summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/ffi/lib.rs67
1 files changed, 39 insertions, 28 deletions
diff --git a/ext/ffi/lib.rs b/ext/ffi/lib.rs
index 6c7f3375f..4c306e7f4 100644
--- a/ext/ffi/lib.rs
+++ b/ext/ffi/lib.rs
@@ -1194,7 +1194,7 @@ fn op_ffi_get_static<'scope>(
) -> Result<serde_v8::Value<'scope>, AnyError> {
let resource = state.resource_table.get::<DynamicLibraryResource>(rid)?;
- let data_ptr = resource.get_static(name)? as *const u8;
+ let data_ptr = resource.get_static(name)?;
Ok(match static_type {
NativeType::Void => {
@@ -1202,68 +1202,79 @@ fn op_ffi_get_static<'scope>(
}
NativeType::U8 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const u8) };
- let number = v8::Number::new(scope, result as f64);
- serde_v8::from_v8(scope, number.into())?
+ let number: v8::Local<v8::Value> =
+ v8::Integer::new_from_unsigned(scope, result as u32).into();
+ number.into()
}
NativeType::I8 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const i8) };
- let number = v8::Number::new(scope, result as f64);
- serde_v8::from_v8(scope, number.into())?
+ let number: v8::Local<v8::Value> =
+ v8::Integer::new(scope, result as i32).into();
+ number.into()
}
NativeType::U16 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const u16) };
- let number = v8::Number::new(scope, result as f64);
- serde_v8::from_v8(scope, number.into())?
+ let number: v8::Local<v8::Value> =
+ v8::Integer::new_from_unsigned(scope, result as u32).into();
+ number.into()
}
NativeType::I16 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const i16) };
- let number = v8::Number::new(scope, result as f64);
- serde_v8::from_v8(scope, number.into())?
+ let number: v8::Local<v8::Value> =
+ v8::Integer::new(scope, result as i32).into();
+ number.into()
}
NativeType::U32 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const u32) };
- let number = v8::Number::new(scope, result as f64);
- serde_v8::from_v8(scope, number.into())?
+ let number: v8::Local<v8::Value> =
+ v8::Integer::new_from_unsigned(scope, result).into();
+ number.into()
}
NativeType::I32 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const i32) };
- let number = v8::Number::new(scope, result as f64);
- serde_v8::from_v8(scope, number.into())?
+ let number: v8::Local<v8::Value> = v8::Integer::new(scope, result).into();
+ number.into()
}
NativeType::U64 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const u64) };
- let big_int = v8::BigInt::new_from_u64(scope, result);
- serde_v8::from_v8(scope, big_int.into())?
+ let big_int: v8::Local<v8::Value> =
+ v8::BigInt::new_from_u64(scope, result).into();
+ big_int.into()
}
NativeType::I64 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const i64) };
- let big_int = v8::BigInt::new_from_i64(scope, result);
- serde_v8::from_v8(scope, big_int.into())?
+ let big_int: v8::Local<v8::Value> =
+ v8::BigInt::new_from_i64(scope, result).into();
+ big_int.into()
}
NativeType::USize => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const usize) };
- let big_int = v8::BigInt::new_from_u64(scope, result as u64);
- serde_v8::from_v8(scope, big_int.into())?
+ let big_int: v8::Local<v8::Value> =
+ v8::BigInt::new_from_u64(scope, result as u64).into();
+ big_int.into()
}
NativeType::ISize => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const isize) };
- let big_int = v8::BigInt::new_from_i64(scope, result as i64);
- serde_v8::from_v8(scope, big_int.into())?
+ let big_int: v8::Local<v8::Value> =
+ v8::BigInt::new_from_i64(scope, result as i64).into();
+ big_int.into()
}
NativeType::F32 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const f32) };
- let number = v8::Number::new(scope, result as f64);
- serde_v8::from_v8(scope, number.into())?
+ let number: v8::Local<v8::Value> =
+ v8::Number::new(scope, result as f64).into();
+ number.into()
}
NativeType::F64 => {
let result = unsafe { ptr::read_unaligned(data_ptr as *const f64) };
- let number = v8::Number::new(scope, result as f64);
- serde_v8::from_v8(scope, number.into())?
+ let number: v8::Local<v8::Value> = v8::Number::new(scope, result).into();
+ number.into()
}
NativeType::Pointer | NativeType::Function => {
- let result = data_ptr as *const u8 as u64;
- let big_int = v8::BigInt::new_from_u64(scope, result);
- serde_v8::from_v8(scope, big_int.into())?
+ let result = data_ptr as u64;
+ let big_int: v8::Local<v8::Value> =
+ v8::BigInt::new_from_u64(scope, result).into();
+ big_int.into()
}
})
}