From e2f292f5ab795d257892e5bb8bb277ffc8e77556 Mon Sep 17 00:00:00 2001 From: Pablo Lamela Date: Mon, 12 May 2025 17:17:28 +0200 Subject: [PATCH] Patch for wasm --- criterion-measurement/cbits/cycles.c | 12 ++++++++++++ criterion-measurement/cbits/time-posix.c | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/criterion-measurement/cbits/cycles.c b/criterion-measurement/cbits/cycles.c index 9cb92668..2cdee785 100644 --- a/criterion-measurement/cbits/cycles.c +++ b/criterion-measurement/cbits/cycles.c @@ -68,6 +68,18 @@ criterion_rdtsc (void) return result; } +#elif wasm32_HOST_ARCH + +#include + +StgWord64 criterion_rdtsc(void) +{ + struct timespec ts; + StgWord64 result_stg = 0; + clock_gettime(CLOCK_REALTIME, &ts); + result_stg = ts.tv_sec * 1000000000LL + ts.tv_nsec; + return result_stg; +} #else #error Unsupported OS/architecture/compiler! diff --git a/criterion-measurement/cbits/time-posix.c b/criterion-measurement/cbits/time-posix.c index 36e59771..a55d830d 100644 --- a/criterion-measurement/cbits/time-posix.c +++ b/criterion-measurement/cbits/time-posix.c @@ -18,7 +18,11 @@ double criterion_getcputime(void) { struct timespec ts; +#ifndef __wasi__ clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts); +#else + clock_gettime(CLOCK_REALTIME, &ts); +#endif return ts.tv_sec + ts.tv_nsec * 1e-9; }