summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/extensions.rs3
-rw-r--r--ops/lib.rs118
-rw-r--r--ops/optimizer_tests/async_nop.out1
-rw-r--r--ops/optimizer_tests/async_result.out1
-rw-r--r--ops/optimizer_tests/callback_options.out1
-rw-r--r--ops/optimizer_tests/cow_str.out1
-rw-r--r--ops/optimizer_tests/f64_slice.out1
-rw-r--r--ops/optimizer_tests/incompatible_1.out1
-rw-r--r--ops/optimizer_tests/issue16934.out1
-rw-r--r--ops/optimizer_tests/issue16934_fast.out1
-rw-r--r--ops/optimizer_tests/op_blob_revoke_object_url.out1
-rw-r--r--ops/optimizer_tests/op_ffi_ptr_value.out1
-rw-r--r--ops/optimizer_tests/op_print.out1
-rw-r--r--ops/optimizer_tests/op_state.out1
-rw-r--r--ops/optimizer_tests/op_state_basic1.out1
-rw-r--r--ops/optimizer_tests/op_state_generics.out1
-rw-r--r--ops/optimizer_tests/op_state_result.out1
-rw-r--r--ops/optimizer_tests/op_state_warning.out1
-rw-r--r--ops/optimizer_tests/op_state_with_transforms.out1
-rw-r--r--ops/optimizer_tests/opstate_with_arity.out1
-rw-r--r--ops/optimizer_tests/option_arg.out1
-rw-r--r--ops/optimizer_tests/owned_string.out1
-rw-r--r--ops/optimizer_tests/param_mut_binding_warning.out1
-rw-r--r--ops/optimizer_tests/raw_ptr.out1
-rw-r--r--ops/optimizer_tests/serde_v8_value.out1
-rw-r--r--ops/optimizer_tests/strings.out1
-rw-r--r--ops/optimizer_tests/strings_result.out1
-rw-r--r--ops/optimizer_tests/u64_result.out1
-rw-r--r--ops/optimizer_tests/uint8array.out1
-rw-r--r--ops/optimizer_tests/unit_result.out1
-rw-r--r--ops/optimizer_tests/unit_result2.out1
-rw-r--r--ops/optimizer_tests/unit_ret.out1
-rw-r--r--ops/optimizer_tests/wasm_op.out1
33 files changed, 55 insertions, 97 deletions
diff --git a/core/extensions.rs b/core/extensions.rs
index 4f68ecf6c..ead1fa354 100644
--- a/core/extensions.rs
+++ b/core/extensions.rs
@@ -51,9 +51,6 @@ pub struct OpDecl {
pub enabled: bool,
pub is_async: bool,
pub is_unstable: bool,
- /// V8 argument count. Used as an optimization
- /// hint by `core.initalizeAsyncOps`.
- pub argc: usize,
pub is_v8: bool,
pub fast_fn: Option<Box<dyn FastFunction>>,
}
diff --git a/ops/lib.rs b/ops/lib.rs
index 21812f605..f7c69ec8a 100644
--- a/ops/lib.rs
+++ b/ops/lib.rs
@@ -145,7 +145,6 @@ impl Op {
is_async: #is_async,
is_unstable: #is_unstable,
is_v8: #is_v8,
- argc: 0,
}
}
@@ -160,7 +159,7 @@ impl Op {
let has_fallible_fast_call = active && optimizer.returns_result;
- let (v8_body, argc) = if is_async {
+ let v8_body = if is_async {
let deferred = attrs.deferred;
codegen_v8_async(
&core,
@@ -202,7 +201,6 @@ impl Op {
is_async: #is_async,
is_unstable: #is_unstable,
is_v8: #is_v8,
- argc: #argc,
}
}
@@ -239,7 +237,7 @@ fn codegen_v8_async(
margs: Attributes,
asyncness: bool,
deferred: bool,
-) -> (TokenStream2, usize) {
+) -> TokenStream2 {
let Attributes { is_v8, .. } = margs;
let special_args = f
.sig
@@ -253,7 +251,7 @@ fn codegen_v8_async(
let rust_i0 = special_args.len();
let args_head = special_args.into_iter().collect::<TokenStream2>();
- let (arg_decls, args_tail, argc) = codegen_args(core, f, rust_i0, 1, true);
+ let (arg_decls, args_tail, _) = codegen_args(core, f, rust_i0, 1, true);
let type_params = exclude_lifetime_params(&f.sig.generics.params);
let (pre_result, mut result_fut) = match asyncness {
@@ -284,48 +282,45 @@ fn codegen_v8_async(
false => quote! { let result = Ok(result); },
};
- (
- quote! {
- use #core::futures::FutureExt;
- // SAFETY: #core guarantees args.data() is a v8 External pointing to an OpCtx for the isolates lifetime
- let ctx = unsafe {
- &*(#core::v8::Local::<#core::v8::External>::cast(args.data()).value()
- as *const #core::_ops::OpCtx)
- };
- let op_id = ctx.id;
- let realm_idx = ctx.realm_idx;
-
- let promise_id = args.get(0);
- let promise_id = #core::v8::Local::<#core::v8::Integer>::try_from(promise_id)
- .map(|l| l.value() as #core::PromiseId)
- .map_err(#core::anyhow::Error::from);
- // Fail if promise id invalid (not an int)
- let promise_id: #core::PromiseId = match promise_id {
- Ok(promise_id) => promise_id,
- Err(err) => {
- #core::_ops::throw_type_error(scope, format!("invalid promise id: {}", err));
- return;
- }
- };
+ quote! {
+ use #core::futures::FutureExt;
+ // SAFETY: #core guarantees args.data() is a v8 External pointing to an OpCtx for the isolates lifetime
+ let ctx = unsafe {
+ &*(#core::v8::Local::<#core::v8::External>::cast(args.data()).value()
+ as *const #core::_ops::OpCtx)
+ };
+ let op_id = ctx.id;
+ let realm_idx = ctx.realm_idx;
+
+ let promise_id = args.get(0);
+ let promise_id = #core::v8::Local::<#core::v8::Integer>::try_from(promise_id)
+ .map(|l| l.value() as #core::PromiseId)
+ .map_err(#core::anyhow::Error::from);
+ // Fail if promise id invalid (not an int)
+ let promise_id: #core::PromiseId = match promise_id {
+ Ok(promise_id) => promise_id,
+ Err(err) => {
+ #core::_ops::throw_type_error(scope, format!("invalid promise id: {}", err));
+ return;
+ }
+ };
- #arg_decls
+ #arg_decls
- // Track async call & get copy of get_error_class_fn
- let get_class = {
- let state = ::std::cell::RefCell::borrow(&ctx.state);
- state.tracker.track_async(op_id);
- state.get_error_class_fn
- };
+ // Track async call & get copy of get_error_class_fn
+ let get_class = {
+ let state = ::std::cell::RefCell::borrow(&ctx.state);
+ state.tracker.track_async(op_id);
+ state.get_error_class_fn
+ };
- #pre_result
- #core::_ops::queue_async_op(ctx, scope, #deferred, async move {
- let result = #result_fut
- #result_wrapper
- (realm_idx, promise_id, op_id, #core::_ops::to_op_result(get_class, result))
- });
- },
- argc,
- )
+ #pre_result
+ #core::_ops::queue_async_op(ctx, scope, #deferred, async move {
+ let result = #result_fut
+ #result_wrapper
+ (realm_idx, promise_id, op_id, #core::_ops::to_op_result(get_class, result))
+ });
+ }
}
fn scope_arg(arg: &FnArg) -> Option<TokenStream2> {
@@ -362,7 +357,7 @@ fn codegen_v8_sync(
f: &syn::ItemFn,
margs: Attributes,
has_fallible_fast_call: bool,
-) -> (TokenStream2, usize) {
+) -> TokenStream2 {
let Attributes { is_v8, .. } = margs;
let special_args = f
.sig
@@ -374,7 +369,7 @@ fn codegen_v8_sync(
.collect::<Vec<_>>();
let rust_i0 = special_args.len();
let args_head = special_args.into_iter().collect::<TokenStream2>();
- let (arg_decls, args_tail, argc) = codegen_args(core, f, rust_i0, 0, false);
+ let (arg_decls, args_tail, _) = codegen_args(core, f, rust_i0, 0, false);
let ret = codegen_sync_ret(core, &f.sig.output);
let type_params = exclude_lifetime_params(&f.sig.generics.params);
@@ -393,27 +388,24 @@ fn codegen_v8_sync(
quote! {}
};
- (
- quote! {
- // SAFETY: #core guarantees args.data() is a v8 External pointing to an OpCtx for the isolates lifetime
- let ctx = unsafe {
- &*(#core::v8::Local::<#core::v8::External>::cast(args.data()).value()
- as *const #core::_ops::OpCtx)
- };
+ quote! {
+ // SAFETY: #core guarantees args.data() is a v8 External pointing to an OpCtx for the isolates lifetime
+ let ctx = unsafe {
+ &*(#core::v8::Local::<#core::v8::External>::cast(args.data()).value()
+ as *const #core::_ops::OpCtx)
+ };
- #fast_error_handler
- #arg_decls
+ #fast_error_handler
+ #arg_decls
- let result = Self::call::<#type_params>(#args_head #args_tail);
+ let result = Self::call::<#type_params>(#args_head #args_tail);
- // use RefCell::borrow instead of state.borrow to avoid clash with std::borrow::Borrow
- let op_state = ::std::cell::RefCell::borrow(&*ctx.state);
- op_state.tracker.track_sync(ctx.id);
+ // use RefCell::borrow instead of state.borrow to avoid clash with std::borrow::Borrow
+ let op_state = ::std::cell::RefCell::borrow(&*ctx.state);
+ op_state.tracker.track_sync(ctx.id);
- #ret
- },
- argc,
- )
+ #ret
+ }
}
/// (full declarations, idents, v8 argument count)
diff --git a/ops/optimizer_tests/async_nop.out b/ops/optimizer_tests/async_nop.out
index b59eedf9b..1fed63735 100644
--- a/ops/optimizer_tests/async_nop.out
+++ b/ops/optimizer_tests/async_nop.out
@@ -26,7 +26,6 @@ impl op_void_async {
is_async: true,
is_unstable: false,
is_v8: false,
- argc: 0usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/async_result.out b/ops/optimizer_tests/async_result.out
index b812e4cef..7270ca3d5 100644
--- a/ops/optimizer_tests/async_result.out
+++ b/ops/optimizer_tests/async_result.out
@@ -26,7 +26,6 @@ impl op_async_result {
is_async: true,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/callback_options.out b/ops/optimizer_tests/callback_options.out
index 81745375d..be84d686a 100644
--- a/ops/optimizer_tests/callback_options.out
+++ b/ops/optimizer_tests/callback_options.out
@@ -26,7 +26,6 @@ impl op_fallback {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/cow_str.out b/ops/optimizer_tests/cow_str.out
index da405f451..c1c4917f6 100644
--- a/ops/optimizer_tests/cow_str.out
+++ b/ops/optimizer_tests/cow_str.out
@@ -26,7 +26,6 @@ impl op_cow_str {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/f64_slice.out b/ops/optimizer_tests/f64_slice.out
index 88ccd232a..9526d988a 100644
--- a/ops/optimizer_tests/f64_slice.out
+++ b/ops/optimizer_tests/f64_slice.out
@@ -26,7 +26,6 @@ impl op_f64_buf {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/incompatible_1.out b/ops/optimizer_tests/incompatible_1.out
index 92cf4a576..cedfb1a8f 100644
--- a/ops/optimizer_tests/incompatible_1.out
+++ b/ops/optimizer_tests/incompatible_1.out
@@ -22,7 +22,6 @@ impl op_sync_serialize_object_with_numbers_as_keys {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/issue16934.out b/ops/optimizer_tests/issue16934.out
index b823b5d53..2b8df30d2 100644
--- a/ops/optimizer_tests/issue16934.out
+++ b/ops/optimizer_tests/issue16934.out
@@ -22,7 +22,6 @@ impl send_stdin {
is_async: true,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/issue16934_fast.out b/ops/optimizer_tests/issue16934_fast.out
index 8ff9bad4f..cf1e41680 100644
--- a/ops/optimizer_tests/issue16934_fast.out
+++ b/ops/optimizer_tests/issue16934_fast.out
@@ -22,7 +22,6 @@ impl send_stdin {
is_async: true,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/op_blob_revoke_object_url.out b/ops/optimizer_tests/op_blob_revoke_object_url.out
index ac51c0de7..8c5a569a5 100644
--- a/ops/optimizer_tests/op_blob_revoke_object_url.out
+++ b/ops/optimizer_tests/op_blob_revoke_object_url.out
@@ -22,7 +22,6 @@ impl op_blob_revoke_object_url {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/op_ffi_ptr_value.out b/ops/optimizer_tests/op_ffi_ptr_value.out
index bfbbd5ae7..5ef91e21f 100644
--- a/ops/optimizer_tests/op_ffi_ptr_value.out
+++ b/ops/optimizer_tests/op_ffi_ptr_value.out
@@ -26,7 +26,6 @@ impl op_ffi_ptr_value {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 2usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/op_print.out b/ops/optimizer_tests/op_print.out
index bafa0b9f8..f22553c76 100644
--- a/ops/optimizer_tests/op_print.out
+++ b/ops/optimizer_tests/op_print.out
@@ -22,7 +22,6 @@ impl op_print {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 2usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/op_state.out b/ops/optimizer_tests/op_state.out
index 5b273960a..520d41e1a 100644
--- a/ops/optimizer_tests/op_state.out
+++ b/ops/optimizer_tests/op_state.out
@@ -26,7 +26,6 @@ impl op_set_exit_code {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/op_state_basic1.out b/ops/optimizer_tests/op_state_basic1.out
index ab3404a42..7d803ac39 100644
--- a/ops/optimizer_tests/op_state_basic1.out
+++ b/ops/optimizer_tests/op_state_basic1.out
@@ -26,7 +26,6 @@ impl foo {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 2usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/op_state_generics.out b/ops/optimizer_tests/op_state_generics.out
index bd5e40afe..28315eb26 100644
--- a/ops/optimizer_tests/op_state_generics.out
+++ b/ops/optimizer_tests/op_state_generics.out
@@ -32,7 +32,6 @@ impl op_foo {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 0usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/op_state_result.out b/ops/optimizer_tests/op_state_result.out
index 76070b536..0b7301bfc 100644
--- a/ops/optimizer_tests/op_state_result.out
+++ b/ops/optimizer_tests/op_state_result.out
@@ -26,7 +26,6 @@ impl foo {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 2usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/op_state_warning.out b/ops/optimizer_tests/op_state_warning.out
index 9917fbf79..1942a6376 100644
--- a/ops/optimizer_tests/op_state_warning.out
+++ b/ops/optimizer_tests/op_state_warning.out
@@ -26,7 +26,6 @@ impl op_listen {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 0usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/op_state_with_transforms.out b/ops/optimizer_tests/op_state_with_transforms.out
index b2ded3c5a..ecd56ceeb 100644
--- a/ops/optimizer_tests/op_state_with_transforms.out
+++ b/ops/optimizer_tests/op_state_with_transforms.out
@@ -32,7 +32,6 @@ impl op_now {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/opstate_with_arity.out b/ops/optimizer_tests/opstate_with_arity.out
index 132e54aef..7c831ccfe 100644
--- a/ops/optimizer_tests/opstate_with_arity.out
+++ b/ops/optimizer_tests/opstate_with_arity.out
@@ -26,7 +26,6 @@ impl op_add_4 {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 4usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/option_arg.out b/ops/optimizer_tests/option_arg.out
index 9f647765f..14dca5487 100644
--- a/ops/optimizer_tests/option_arg.out
+++ b/ops/optimizer_tests/option_arg.out
@@ -22,7 +22,6 @@ impl op_try_close {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/owned_string.out b/ops/optimizer_tests/owned_string.out
index 4892221f8..56d3cbfdc 100644
--- a/ops/optimizer_tests/owned_string.out
+++ b/ops/optimizer_tests/owned_string.out
@@ -26,7 +26,6 @@ impl op_string_length {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/param_mut_binding_warning.out b/ops/optimizer_tests/param_mut_binding_warning.out
index daccc28ab..3a93a738f 100644
--- a/ops/optimizer_tests/param_mut_binding_warning.out
+++ b/ops/optimizer_tests/param_mut_binding_warning.out
@@ -22,7 +22,6 @@ impl op_read_sync {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 2usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/raw_ptr.out b/ops/optimizer_tests/raw_ptr.out
index cf678ddb9..2b4e8c0b4 100644
--- a/ops/optimizer_tests/raw_ptr.out
+++ b/ops/optimizer_tests/raw_ptr.out
@@ -32,7 +32,6 @@ impl op_ffi_ptr_of {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 2usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/serde_v8_value.out b/ops/optimizer_tests/serde_v8_value.out
index d4f2c0321..3ea0aacb3 100644
--- a/ops/optimizer_tests/serde_v8_value.out
+++ b/ops/optimizer_tests/serde_v8_value.out
@@ -26,7 +26,6 @@ impl op_is_proxy {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/strings.out b/ops/optimizer_tests/strings.out
index 41f09c4f8..8aa93a37a 100644
--- a/ops/optimizer_tests/strings.out
+++ b/ops/optimizer_tests/strings.out
@@ -26,7 +26,6 @@ impl op_string_length {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/strings_result.out b/ops/optimizer_tests/strings_result.out
index 8446a603b..fd847d9ca 100644
--- a/ops/optimizer_tests/strings_result.out
+++ b/ops/optimizer_tests/strings_result.out
@@ -22,7 +22,6 @@ impl op_string_length {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/u64_result.out b/ops/optimizer_tests/u64_result.out
index 0039c7575..efe6c9d23 100644
--- a/ops/optimizer_tests/u64_result.out
+++ b/ops/optimizer_tests/u64_result.out
@@ -22,7 +22,6 @@ impl op_bench_now {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 0usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/uint8array.out b/ops/optimizer_tests/uint8array.out
index bd7fa4d87..06e50ce66 100644
--- a/ops/optimizer_tests/uint8array.out
+++ b/ops/optimizer_tests/uint8array.out
@@ -26,7 +26,6 @@ impl op_import_spki_x25519 {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 2usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/unit_result.out b/ops/optimizer_tests/unit_result.out
index f4e87ffa3..082d29a45 100644
--- a/ops/optimizer_tests/unit_result.out
+++ b/ops/optimizer_tests/unit_result.out
@@ -26,7 +26,6 @@ impl op_unit_result {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 0usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/unit_result2.out b/ops/optimizer_tests/unit_result2.out
index d1df0e041..6f5a5915d 100644
--- a/ops/optimizer_tests/unit_result2.out
+++ b/ops/optimizer_tests/unit_result2.out
@@ -26,7 +26,6 @@ impl op_set_nodelay {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 2usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/unit_ret.out b/ops/optimizer_tests/unit_ret.out
index c18fa1915..3924beb53 100644
--- a/ops/optimizer_tests/unit_ret.out
+++ b/ops/optimizer_tests/unit_ret.out
@@ -26,7 +26,6 @@ impl op_unit {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 0usize,
}
}
#[inline]
diff --git a/ops/optimizer_tests/wasm_op.out b/ops/optimizer_tests/wasm_op.out
index a40beb158..219537f60 100644
--- a/ops/optimizer_tests/wasm_op.out
+++ b/ops/optimizer_tests/wasm_op.out
@@ -26,7 +26,6 @@ impl op_wasm {
is_async: false,
is_unstable: false,
is_v8: false,
- argc: 1usize,
}
}
#[inline]