feat: add container

This commit is contained in:
2023-01-21 00:50:14 +08:00
parent f3fda56f06
commit 2de77003fb
4 changed files with 46 additions and 13 deletions

View File

@@ -0,0 +1,33 @@
use anyhow::Result;
use wasmtime::{Config, Engine, Linker, Module, Store};
fn main() -> Result<()> {
let config = Config::default();
let engine = Engine::new(&config).unwrap();
let wasm_bytes = include_bytes!("/Users/hatterjiang/Code/hattergit/secure-javascript-container/javascript-engine/target/wasm32-unknown-unknown/debug/javascript_engine.wasm");
let module = Module::new(&engine, wasm_bytes)?;
let linker = Linker::new(&engine);
let mut store = Store::new(&engine, ());
let instance = linker.instantiate(&mut store, &module)?;
let memory = instance.get_memory(&mut store, "memory").expect("SHOULD NOT HAPPEN");
let malloc = instance.get_typed_func::<i32, i32>(&mut store, "malloc")?;
let free = instance.get_typed_func::<(i32, i32), ()>(&mut store, "free")?;
let eval = instance.get_typed_func::<(i32, i32), (i32, i32)>(&mut store, "eval")?;
let js = "1+2";
let js_bytes = js.as_bytes();
let js_bytes_len = js_bytes.len();
let ptr = malloc.call(&mut store, js.as_bytes().len() as i32)?;
let memory_data_mut = memory.data_mut(&mut store);
for i in 0..js_bytes_len {
memory_data_mut[ptr as usize + i] = js_bytes[i];
}
let eval_result = eval.call(&mut store, (ptr, js_bytes_len as i32))?;
println!("Eval result: {:?}", eval_result);
Ok(())
}