summaryrefslogtreecommitdiff
path: root/ops/op2/generator_state.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ops/op2/generator_state.rs')
-rw-r--r--ops/op2/generator_state.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/ops/op2/generator_state.rs b/ops/op2/generator_state.rs
new file mode 100644
index 000000000..741d4f7f3
--- /dev/null
+++ b/ops/op2/generator_state.rs
@@ -0,0 +1,32 @@
+// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+use proc_macro2::Ident;
+use proc_macro2::TokenStream;
+
+pub struct GeneratorState {
+ /// The path to the `deno_core` crate (either `deno_core` or `crate`, the latter used if the op is `(core)`).
+ pub deno_core: TokenStream,
+
+ /// Identifiers for each of the arguments of the original function
+ pub args: Vec<Ident>,
+ /// The new identifier for the original function's contents.
+ pub call: Ident,
+ /// The result of the `call` function
+ pub result: Ident,
+
+ /// The `v8::CallbackScope` used if necessary for the function.
+ pub scope: Ident,
+ /// The `v8::FunctionCallbackInfo` used to pass args into the slow function.
+ pub info: Ident,
+ /// The `v8::FunctionCallbackArguments` used to pass args into the slow function.
+ pub fn_args: Ident,
+ /// The `v8::ReturnValue` used in the slow function
+ pub retval: Ident,
+ /// The "slow" function (ie: the one that isn't a fastcall)
+ pub slow_function: Ident,
+ /// The "fast" function (ie: a fastcall)
+ pub fast_function: Ident,
+
+ pub needs_args: bool,
+ pub needs_retval: bool,
+ pub needs_scope: bool,
+}