wasm-bindgen = "0.2.87"
wasm-bindgen-futures = "0.4"
serde-wasm-bindgen = "0.5"
-web-sys = { version = "0.3", features = ["Document", "Window", "Element"] }
+web-sys = { version = "0.3", features = ["Document", "Window", "Element", "Performance"] }
js-sys = "0.3"
[target.'cfg(target_os = "wasi")'.dependencies]
#[cfg(target_arch = "wasm32")]
#[inline(always)]
pub(crate) fn cpu_now(&mut self) {
- // TODO
+ let millisecs = web_sys::window()
+ .expect("window global object should be available")
+ .performance()
+ .expect("performance property in window should be available")
+ .now();
+ let secs = float_alloc!(millisecs / 1000.0, self.machine_st.arena);
+
+ self.machine_st.unify_f64(secs, self.deref_register(1));
}
#[inline(always)]
let code = self.deref_register(1);
let result_reg = self.deref_register(2);
if let Some(code) = self.machine_st.value_to_str_like(code) {
- let result = match js_sys::eval(&code.as_str()) {
+ match js_sys::eval(&code.as_str()) {
Ok(result) => self.unify_js_value(result, result_reg),
Err(result) => self.unify_js_value(result, result_reg),
};