mirror of
https://github.com/denoland/deno.git
synced 2024-12-25 16:49:18 -05:00
46 lines
1.6 KiB
Text
46 lines
1.6 KiB
Text
|
#[allow(non_camel_case_types)]
|
||
|
pub struct op_void_with_result {}
|
||
|
impl op_void_with_result {
|
||
|
pub const fn name() -> &'static str {
|
||
|
stringify!(op_void_with_result)
|
||
|
}
|
||
|
pub const fn decl() -> deno_core::_ops::OpDecl {
|
||
|
deno_core::_ops::OpDecl {
|
||
|
name: stringify!(op_void_with_result),
|
||
|
v8_fn_ptr: Self::slow_function as _,
|
||
|
enabled: true,
|
||
|
fast_fn: None,
|
||
|
is_async: false,
|
||
|
is_unstable: false,
|
||
|
is_v8: false,
|
||
|
arg_count: 0usize as u8,
|
||
|
}
|
||
|
}
|
||
|
pub extern "C" fn slow_function(info: *const deno_core::v8::FunctionCallbackInfo) {
|
||
|
let result = Self::call();
|
||
|
match result {
|
||
|
Ok(result) => {}
|
||
|
Err(err) => {
|
||
|
let scope = &mut unsafe { deno_core::v8::CallbackScope::new(&*info) };
|
||
|
let args = deno_core::v8::FunctionCallbackArguments::from_function_callback_info(unsafe {
|
||
|
&*info
|
||
|
});
|
||
|
let opctx = unsafe {
|
||
|
&*(deno_core::v8::Local::<deno_core::v8::External>::cast(args.data())
|
||
|
.value() as *const deno_core::_ops::OpCtx)
|
||
|
};
|
||
|
let opstate = ::std::cell::RefCell::borrow(&*opctx.state);
|
||
|
let exception = deno_core::error::to_v8_error(
|
||
|
scope,
|
||
|
opstate.get_error_class_fn,
|
||
|
&err,
|
||
|
);
|
||
|
scope.throw_exception(exception);
|
||
|
return;
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
#[inline(always)]
|
||
|
pub fn call() -> Result<(), AnyError> {}
|
||
|
}
|