Browse Source

Fix calling time.now() in wasm js runtime

Damian Tarnawski 1 year ago
parent
commit
c19af95db0
2 changed files with 5 additions and 10 deletions
  1. 2 2
      core/time/time_js.odin
  2. 3 8
      vendor/wasm/js/runtime.js

+ 2 - 2
core/time/time_js.odin

@@ -10,7 +10,7 @@ _now :: proc "contextless" () -> Time {
 	foreign odin_env {
 		time_now :: proc "contextless" () -> i64 ---
 	}
-	return Time{time_now()}
+	return Time{time_now()*1e6}
 }
 
 _sleep :: proc "contextless" (d: Duration) {
@@ -26,7 +26,7 @@ _tick_now :: proc "contextless" () -> Tick {
 	foreign odin_env {
 		tick_now :: proc "contextless" () -> i64 ---
 	}
-	return Tick{tick_now()}
+	return Tick{tick_now()*1e6}
 }
 
 _yield :: proc "contextless" () {

+ 3 - 8
vendor/wasm/js/runtime.js

@@ -1334,14 +1334,9 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) {
 			abort: () => { Module.abort() },
 			evaluate: (str_ptr, str_len) => { eval.call(null, wasmMemoryInterface.loadString(str_ptr, str_len)); },
 
-			time_now: () => {
-				// convert ms to ns
-				return Date.now() * 1e6;
-			},
-			tick_now: () => {
-				// convert ms to ns
-				return performance.now() * 1e6;
-			},
+			// return a bigint to be converted to i64
+			time_now: () => BigInt(Date.now()),
+			tick_now: () => BigInt(performance.now()),
 			time_sleep: (duration_ms) => {
 				if (duration_ms > 0) {
 					// TODO(bill): Does this even make any sense?