pub struct JsRuntimeForSnapshot(_);
Expand description

The runtime type used for snapshot creation.

Implementations§

source§

impl JsRuntimeForSnapshot

source

pub fn new(options: RuntimeOptions) -> JsRuntimeForSnapshot

source

pub fn snapshot(self) -> StartupData

Takes a snapshot and consumes the runtime.

Error can usually be downcast to JsError.

Methods from Deref<Target = JsRuntime>§

source

pub fn main_context(&self) -> Global<Context>

source

pub fn v8_isolate(&mut self) -> &mut OwnedIsolate

source

pub fn inspector(&mut self) -> Rc<RefCell<JsRuntimeInspector>>

source

pub fn main_realm(&mut self) -> JsRealm

source

pub fn extensions(&self) -> &Vec<Extension>

Returns the extensions that this runtime is using (including internal ones).

source

pub fn create_realm( &mut self, options: CreateRealmOptions ) -> Result<JsRealm, Error>

Creates a new realm (V8 context) in this JS execution context, pre-initialized with all of the extensions that were passed in RuntimeOptions::extensions when the JsRuntime was constructed.

source

pub fn handle_scope(&mut self) -> HandleScope<'_>

source

pub fn op_state(&mut self) -> Rc<RefCell<OpState>>

Returns the runtime’s op state, which can be used to maintain ops and access resources between op calls.

source

pub fn execute_script( &mut self, name: &'static str, source_code: ModuleCode ) -> Result<Global<Value>, Error>

Executes traditional JavaScript code (traditional = not ES modules).

The execution takes place on the current main realm, so it is possible to maintain local JS state and invoke this method multiple times.

name can be a filepath or any other string, but it is required to be 7-bit ASCII, eg.

  • “/some/file/path.js”
  • “[native code]”

The same name value can be used for multiple executions.

Error can usually be downcast to JsError.

source

pub fn execute_script_static( &mut self, name: &'static str, source_code: &'static str ) -> Result<Global<Value>, Error>

Executes traditional JavaScript code (traditional = not ES modules).

The execution takes place on the current main realm, so it is possible to maintain local JS state and invoke this method multiple times.

name can be a filepath or any other string, but it is required to be 7-bit ASCII, eg.

  • “/some/file/path.js”
  • “[native code]”

The same name value can be used for multiple executions.

Error can usually be downcast to JsError.

source

pub async fn call_and_await( &mut self, function: &Global<Function> ) -> Result<Global<Value>, Error>

Call a function. If it returns a promise, run the event loop until that promise is settled. If the promise rejects or there is an uncaught error in the event loop, return Err(error). Or return Ok(<await returned>).

source

pub fn get_module_namespace( &mut self, module_id: ModuleId ) -> Result<Global<Object>, Error>

Returns the namespace object of a module.

This is only available after module evaluation has completed. This function panics if module has not been instantiated.

source

pub fn add_near_heap_limit_callback<C>(&mut self, cb: C)where C: FnMut(usize, usize) -> usize + 'static,

Registers a callback on the isolate when the memory limits are approached. Use this to prevent V8 from crashing the process when reaching the limit.

Calls the closure with the current heap limit and the initial heap limit. The return value of the closure is set as the new limit.

source

pub fn remove_near_heap_limit_callback(&mut self, heap_limit: usize)

source

pub fn maybe_init_inspector(&mut self)

source

pub fn poll_value( &mut self, global: &Global<Value>, cx: &mut Context<'_> ) -> Poll<Result<Global<Value>, Error>>

source

pub async fn resolve_value( &mut self, global: Global<Value> ) -> Result<Global<Value>, Error>

Waits for the given value to resolve while polling the event loop.

This future resolves when either the value is resolved or the event loop runs to completion.

source

pub async fn run_event_loop( &mut self, wait_for_inspector: bool ) -> Result<(), Error>

Runs event loop to completion

This future resolves when:

  • there are no more pending dynamic imports
  • there are no more pending ops
  • there are no more active inspector sessions (only if wait_for_inspector is set to true)
source

pub fn poll_event_loop( &mut self, cx: &mut Context<'_>, wait_for_inspector: bool ) -> Poll<Result<(), Error>>

Runs a single tick of event loop

If wait_for_inspector is set to true event loop will return Poll::Pending if there are active inspector sessions.

source

pub fn mod_evaluate(&mut self, id: ModuleId) -> Receiver<Result<(), Error>>

Evaluates an already instantiated ES module.

Returns a receiver handle that resolves when module promise resolves. Implementors must manually call JsRuntime::run_event_loop to drive module evaluation future.

Error can usually be downcast to JsError and should be awaited and checked after JsRuntime::run_event_loop completion.

This function panics if module has not been instantiated.

source

pub async fn load_main_module( &mut self, specifier: &ModuleSpecifier, code: Option<ModuleCode> ) -> Result<ModuleId, Error>

Asynchronously load specified module and all of its dependencies.

The module will be marked as “main”, and because of that “import.meta.main” will return true when checked inside that module.

User must call JsRuntime::mod_evaluate with returned ModuleId manually after load is finished.

source

pub async fn load_side_module( &mut self, specifier: &ModuleSpecifier, code: Option<ModuleCode> ) -> Result<ModuleId, Error>

Asynchronously load specified ES module and all of its dependencies.

This method is meant to be used when loading some utility code that might be later imported by the main module (ie. an entry point module).

User must call JsRuntime::mod_evaluate with returned ModuleId manually after load is finished.

Trait Implementations§

source§

impl Deref for JsRuntimeForSnapshot

§

type Target = JsRuntime

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl DerefMut for JsRuntimeForSnapshot

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.