Browse Source

Make `raw_data` return `[^]T` types

gingerBill 3 years ago
parent
commit
8c1499dbc2
3 changed files with 15 additions and 15 deletions
  1. 5 5
      core/hash/crc32.odin
  2. 3 3
      core/hash/hash.odin
  3. 7 7
      core/runtime/core_builtin.odin

+ 5 - 5
core/hash/crc32.odin

@@ -9,8 +9,8 @@ crc32 :: proc(data: []byte, seed := u32(0)) -> u32 #no_bounds_check {
 	length := len(data)
 
 	for length != 0 && uintptr(buffer) & 7 != 0 {
-		crc = crc32_table[0][byte(crc) ~ buffer^] ~ (crc >> 8)
-		buffer = intrinsics.ptr_offset(buffer, 1)
+		crc = crc32_table[0][byte(crc) ~ buffer[0]] ~ (crc >> 8)
+		buffer = buffer[1:]
 		length -= 1
 	}
 
@@ -28,14 +28,14 @@ crc32 :: proc(data: []byte, seed := u32(0)) -> u32 #no_bounds_check {
 		      crc32_table[1][buf[6]] ~
 		      crc32_table[0][buf[7]]
 
-		buffer = intrinsics.ptr_offset(buffer, 8)
+		buffer = buffer[8:]
 		length -= 8
 	}
 
 
 	for length != 0 {
-		crc = crc32_table[0][byte(crc) ~ buffer^] ~ (crc >> 8)
-		buffer = intrinsics.ptr_offset(buffer, 1)
+		crc = crc32_table[0][byte(crc) ~ buffer[0]] ~ (crc >> 8)
+		buffer = buffer[1:]
 		length -= 1
 	}
 

+ 3 - 3
core/hash/hash.odin

@@ -15,7 +15,7 @@ adler32 :: proc(data: []byte, seed := u32(1)) -> u32 #no_bounds_check {
 	for len(buf) != 0 && uintptr(buffer) & 7 != 0 {
 		a = (a + u64(buf[0]))
 		b = (b + a)
-		buffer = intrinsics.ptr_offset(buffer, 1)
+		buffer = buffer[1:]
 		buf = buf[1:]
 	}
 
@@ -130,9 +130,9 @@ murmur32 :: proc(data: []byte, seed := u32(0)) -> u32 {
 	h1: u32 = seed
 	nblocks := len(data)/4
 	p := raw_data(data)
-	p1 := mem.ptr_offset(p, 4*nblocks)
+	p1 := p[4*nblocks:]
 
-	for ; p < p1; p = mem.ptr_offset(p, 4) {
+	for ; p < p1; p = p[4:] {
 		k1 := (cast(^u32)p)^
 
 		k1 *= c1_32

+ 7 - 7
core/runtime/core_builtin.odin

@@ -600,21 +600,21 @@ card :: proc(s: $S/bit_set[$E; $U]) -> int {
 
 
 @builtin
-raw_array_data :: proc "contextless" (a: $P/^($T/[$N]$E)) -> ^E {
-	return (^E)(a)
+raw_array_data :: proc "contextless" (a: $P/^($T/[$N]$E)) -> [^]E {
+	return ([^]E)(a)
 }
 @builtin
-raw_slice_data :: proc "contextless" (s: $S/[]$E) -> ^E {
+raw_slice_data :: proc "contextless" (s: $S/[]$E) -> [^]E {
 	ptr := (transmute(Raw_Slice)s).data
-	return (^E)(ptr)
+	return ([^]E)(ptr)
 }
 @builtin
-raw_dynamic_array_data :: proc "contextless" (s: $S/[dynamic]$E) -> ^E {
+raw_dynamic_array_data :: proc "contextless" (s: $S/[dynamic]$E) -> [^]E {
 	ptr := (transmute(Raw_Dynamic_Array)s).data
-	return (^E)(ptr)
+	return ([^]E)(ptr)
 }
 @builtin
-raw_string_data :: proc "contextless" (s: $S/string) -> ^u8 {
+raw_string_data :: proc "contextless" (s: $S/string) -> [^]u8 {
 	return (transmute(Raw_String)s).data
 }