Browse Source

Fix `-target:js_wasm32` for `core:runtime`

gingerBill 4 years ago
parent
commit
16eaa17ed9

+ 3 - 2
core/os/os_js_wasm32.odin

@@ -35,8 +35,9 @@ open :: proc(path: string, mode: int = O_RDONLY, perm: int = 0) -> (Handle, Errn
 close :: proc(fd: Handle) -> Errno {
 close :: proc(fd: Handle) -> Errno {
 	return 0;
 	return 0;
 }
 }
-
-
+seek :: proc(fd: Handle, offset: i64, whence: int) -> (i64, Errno) {
+	return 0, 0;
+}
 current_thread_id :: proc "contextless" () -> int {
 current_thread_id :: proc "contextless" () -> int {
 	return 0;
 	return 0;
 }
 }

+ 30 - 0
core/runtime/default_allocators_general.odin

@@ -0,0 +1,30 @@
+//+build !windows
+//+build !freestanding
+//+build !js
+package runtime
+
+when ODIN_DEFAULT_TO_NIL_ALLOCATOR {
+	// mem.nil_allocator reimplementation
+
+	default_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
+	                               size, alignment: int,
+	                               old_memory: rawptr, old_size: int, loc := #caller_location) -> ([]byte, Allocator_Error) {
+		return nil, .None;
+	}
+
+	default_allocator :: proc() -> Allocator {
+		return Allocator{
+			procedure = default_allocator_proc,
+			data = nil,
+		};
+	}
+} else {
+	// TODO(bill): reimplement these procedures in the os_specific stuff
+	import "core:os"
+
+	default_allocator_proc :: os.heap_allocator_proc;
+
+	default_allocator :: proc() -> Allocator {
+		return os.heap_allocator();
+	}
+}

+ 17 - 0
core/runtime/default_allocators_nil.odin

@@ -0,0 +1,17 @@
+//+build freestanding, js
+package runtime
+
+// mem.nil_allocator reimplementation
+
+default_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
+                               size, alignment: int,
+                               old_memory: rawptr, old_size: int, loc := #caller_location) -> ([]byte, Allocator_Error) {
+	return nil, .None;
+}
+
+default_allocator :: proc() -> Allocator {
+	return Allocator{
+		procedure = default_allocator_proc,
+		data = nil,
+	};
+}

+ 39 - 0
core/runtime/default_allocators_windows.odin

@@ -0,0 +1,39 @@
+//+build windows
+package runtime
+
+default_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
+                                size, alignment: int,
+                                old_memory: rawptr, old_size: int, loc := #caller_location) -> ([]byte, Allocator_Error) {
+	switch mode {
+	case .Alloc:
+		return _windows_default_alloc(size, alignment);
+
+	case .Free:
+		_windows_default_free(old_memory);
+
+	case .Free_All:
+		// NOTE(tetra): Do nothing.
+
+	case .Resize:
+		return _windows_default_resize(old_memory, old_size, size, alignment);
+
+	case .Query_Features:
+		set := (^Allocator_Mode_Set)(old_memory);
+		if set != nil {
+			set^ = {.Alloc, .Free, .Resize, .Query_Features};
+		}
+		return nil, nil;
+
+	case .Query_Info:
+		return nil, nil;
+	}
+
+	return nil, nil;
+}
+
+default_allocator :: proc() -> Allocator {
+	return Allocator{
+		procedure = default_allocator_proc,
+		data = nil,
+	};
+}

+ 0 - 65
core/runtime/default_allocators.odin → core/runtime/default_temporary_allocator.odin

@@ -1,70 +1,5 @@
 package runtime
 package runtime
 
 
-when ODIN_DEFAULT_TO_NIL_ALLOCATOR || ODIN_OS == "freestanding" || ODIN_OS == "js" {
-	// mem.nil_allocator reimplementation
-
-	default_allocator_proc :: proc(allocator_data: rawptr, mode: mem.Allocator_Mode,
-	                               size, alignment: int,
-	                               old_memory: rawptr, old_size: int, loc := #caller_location) -> ([]byte, Allocator_Error) {
-		return nil, .None;
-	}
-
-	default_allocator :: proc() -> Allocator {
-		return Allocator{
-			procedure = default_allocator_proc,
-			data = nil,
-		};
-	}
-
-} else when ODIN_OS == "windows" {
-	default_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode,
-	                                size, alignment: int,
-	                                old_memory: rawptr, old_size: int, loc := #caller_location) -> ([]byte, Allocator_Error) {
-		switch mode {
-		case .Alloc:
-			return _windows_default_alloc(size, alignment);
-
-		case .Free:
-			_windows_default_free(old_memory);
-
-		case .Free_All:
-			// NOTE(tetra): Do nothing.
-
-		case .Resize:
-			return _windows_default_resize(old_memory, old_size, size, alignment);
-
-		case .Query_Features:
-			set := (^Allocator_Mode_Set)(old_memory);
-			if set != nil {
-				set^ = {.Alloc, .Free, .Resize, .Query_Features};
-			}
-			return nil, nil;
-
-		case .Query_Info:
-			return nil, nil;
-		}
-
-		return nil, nil;
-	}
-
-	default_allocator :: proc() -> Allocator {
-		return Allocator{
-			procedure = default_allocator_proc,
-			data = nil,
-		};
-	}
-
-} else {
-	// TODO(bill): reimplement these procedures in the os_specific stuff
-	import "core:os"
-
-	default_allocator_proc :: os.heap_allocator_proc;
-
-	default_allocator :: proc() -> Allocator {
-		return os.heap_allocator();
-	}
-}
-
 @(private)
 @(private)
 byte_slice :: #force_inline proc "contextless" (data: rawptr, len: int) -> []byte {
 byte_slice :: #force_inline proc "contextless" (data: rawptr, len: int) -> []byte {
 	return transmute([]u8)Raw_Slice{data=data, len=max(len, 0)};
 	return transmute([]u8)Raw_Slice{data=data, len=max(len, 0)};

+ 1 - 0
core/runtime/os_specific_any.odin

@@ -1,5 +1,6 @@
 //+build !freestanding
 //+build !freestanding
 //+build !windows
 //+build !windows
+//+build !js
 package runtime
 package runtime
 
 
 import "core:os"
 import "core:os"