Update time procedures for js targets

This commit is contained in:
gingerBill
2022-05-21 16:35:06 +01:00
parent 72fcf16a39
commit 577fa2d29b
2 changed files with 27 additions and 8 deletions

View File

@@ -2,22 +2,31 @@
//+build js
package time
_IS_SUPPORTED :: false
foreign import "odin_env"
_IS_SUPPORTED :: true
_now :: proc "contextless" () -> Time {
return {}
foreign odin_env {
time_now :: proc "contextless" () -> i64 ---
}
return Time{time_now()}
}
_sleep :: proc "contextless" (d: Duration) {
foreign odin_env {
time_sleep :: proc "contextless" (ms: u32) ---
}
if d > 0 {
time_sleep(u32(d/1e6))
}
}
_tick_now :: proc "contextless" () -> Tick {
// mul_div_u64 :: proc "contextless" (val, num, den: i64) -> i64 {
// q := val / den
// r := val % den
// return q * num + r * num / den
// }
return {}
foreign odin_env {
tick_now :: proc "contextless" () -> i64 ---
}
return Tick{tick_now()}
}
_yield :: proc "contextless" () {

View File

@@ -1280,8 +1280,18 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) {
evaluate: (str_ptr, str_len) => { eval.call(null, wasmMemoryInterface.loadString(str_ptr, str_len)); },
time_now: () => {
// convert ms to ns
return Date.now() * 1e6;
},
time_tick_now: () => {
// convert ms to ns
return performance.now() * 1e6;
},
time_sleep: (duration_ms) => {
if (duration_ms > 0) {
// TODO(bill): Does this even make any sense?
}
},
sqrt: (x) => Math.sqrt(x),
sin: (x) => Math.sin(x),