Browse Source

Make many `package time` procedures use `"contextless"` calling convention

gingerBill 4 years ago
parent
commit
0d258e8b55

+ 1 - 1
core/sys/windows/synchronization.odin

@@ -3,7 +3,7 @@ package sys_windows
 
 foreign import Synchronization "system:Synchronization.lib"
 
-@(default_calling_convention="c")
+@(default_calling_convention="stdcall")
 foreign Synchronization {
 	WaitOnAddress :: proc(Address: PVOID, CompareAddress: PVOID, AddressSize: SIZE_T, dwMilliseconds: DWORD) -> BOOL ---
 	WakeByAddressSingle :: proc(Address: PVOID) ---

+ 0 - 3
core/testing/runner_windows.odin

@@ -6,9 +6,6 @@ import win32 "core:sys/windows"
 import "core:runtime"
 import "core:intrinsics"
 import "core:time"
-import "core:fmt"
-
-_ :: fmt
 
 Sema :: struct {
 	count: i32,

+ 6 - 6
core/time/perf.odin

@@ -6,16 +6,16 @@ Tick :: struct {
 	_nsec: i64, // relative amount
 }
 
-tick_now :: proc() -> Tick {
+tick_now :: proc "contextless" () -> Tick {
 	return _tick_now()
 }
 
-tick_diff :: proc(start, end: Tick) -> Duration {
+tick_diff :: proc "contextless" (start, end: Tick) -> Duration {
 	d := end._nsec - start._nsec
 	return Duration(d)
 }
 
-tick_lap_time :: proc(prev: ^Tick) -> Duration {
+tick_lap_time :: proc "contextless" (prev: ^Tick) -> Duration {
 	d: Duration
 	t := tick_now()
 	if prev._nsec != 0 {
@@ -25,18 +25,18 @@ tick_lap_time :: proc(prev: ^Tick) -> Duration {
 	return d
 }
 
-tick_since :: proc(start: Tick) -> Duration {
+tick_since :: proc "contextless" (start: Tick) -> Duration {
 	return tick_diff(start, tick_now())
 }
 
 
 @(deferred_in_out=_tick_duration_end)
-SCOPED_TICK_DURATION :: proc(d: ^Duration) -> Tick {
+SCOPED_TICK_DURATION :: proc "contextless" (d: ^Duration) -> Tick {
 	return tick_now()
 }
 
 
-_tick_duration_end :: proc(d: ^Duration, t: Tick) {
+_tick_duration_end :: proc "contextless" (d: ^Duration, t: Tick) {
 	d^ = tick_since(t)
 }
 

+ 3 - 3
core/time/time_essence.odin

@@ -4,15 +4,15 @@ import "core:sys/es"
 
 IS_SUPPORTED :: true;
 
-now :: proc() -> Time {
+now :: proc "contextless" () -> Time {
 	// TODO Replace once there's a proper time API.
 	return Time{_nsec = i64(es.TimeStampMs() * 1e6)};
 }
 
-sleep :: proc(d: Duration) {
+sleep :: proc "contextless" (d: Duration) {
 	es.Sleep(u64(d/Millisecond));
 }
 
-_tick_now :: proc() -> Tick {
+_tick_now :: proc "contextless" () -> Tick {
 	return Tick{_nsec = i64(es.TimeStampMs() * 1e6)};
 }

+ 4 - 4
core/time/time_unix.odin

@@ -4,9 +4,9 @@ package time
 IS_SUPPORTED :: true // NOTE: Times on Darwin are UTC.
 
 when ODIN_OS == "darwin" {
-  foreign import libc "System.framework"
+	foreign import libc "System.framework"
 } else  {
-  foreign import libc "system:c"
+	foreign import libc "system:c"
 }
 
 
@@ -40,7 +40,7 @@ CLOCK_SYSTEM   :: CLOCK_REALTIME
 CLOCK_CALENDAR :: CLOCK_MONOTONIC
 
 
-clock_gettime :: proc(clock_id: u64) -> TimeSpec {
+clock_gettime :: proc "contextless" (clock_id: u64) -> TimeSpec {
 	ts : TimeSpec // NOTE(tetra): Do we need to initialize this?
 	_unix_clock_gettime(clock_id, &ts)
 	return ts
@@ -85,7 +85,7 @@ nanosleep :: proc(nanoseconds: i64) -> int {
 }
 
 
-_tick_now :: proc() -> Tick {
+_tick_now :: proc "contextless" () -> Tick {
 	t := clock_gettime(CLOCK_MONOTONIC_RAW)
 	_nsec := t.tv_sec*1e9 + t.tv_nsec
 	return Tick{_nsec = _nsec}

+ 2 - 2
core/time/time_windows.odin

@@ -17,8 +17,8 @@ sleep :: proc(d: Duration) {
 
 
 
-_tick_now :: proc() -> Tick {
-	mul_div_u64 :: proc(val, num, den: i64) -> i64 {
+_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