Function quickjs_runtime::quickjs_utils::compile::compile
source · pub unsafe fn compile(
context: *mut JSContext,
script: Script,
) -> Result<QuickJsValueAdapter, JsError>
Expand description
compile a script, will result in a JSValueRef with tag JS_TAG_FUNCTION_BYTECODE or JS_TAG_MODULE. It can be executed with run_compiled_function().
§Example
use quickjs_runtime::builder::QuickJsRuntimeBuilder;
use quickjs_runtime::jsutils::Script;
use quickjs_runtime::quickjs_utils::primitives;
use quickjs_runtime::quickjs_utils::compile::{compile, run_compiled_function};
let rt = QuickJsRuntimeBuilder::new().build();
rt.exe_rt_task_in_event_loop(|q_js_rt| {
unsafe {
let q_ctx = q_js_rt.get_main_realm();
let func_res = compile(q_ctx.context, Script::new("test_func.es", "let a = 7; let b = 5; a * b;"));
let func = func_res.ok().expect("func compile failed");
let run_res = run_compiled_function(q_ctx.context, &func);
let res = run_res.ok().expect("run_compiled_function failed");
let i_res = primitives::to_i32(&res);
let i = i_res.ok().expect("could not convert to i32");
assert_eq!(i, 7*5);
}
});
§Safety
When passing a context pointer please make sure the corresponding QuickJsContext is still valid