Przeglądaj źródła

Merge pull request #4562 from dozn/patch-1

Move Struct Field Zipping Outside of Loop
gingerBill 8 miesięcy temu
rodzic
commit
e4bdc4ff7c
1 zmienionych plików z 3 dodań i 3 usunięć
  1. 3 3
      core/encoding/json/unmarshal.odin

+ 3 - 3
core/encoding/json/unmarshal.odin

@@ -417,15 +417,15 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm
 		if .raw_union in t.flags {
 			return UNSUPPORTED_TYPE
 		}
-	
+
+		fields := reflect.struct_fields_zipped(ti.id)
+		
 		struct_loop: for p.curr_token.kind != end_token {
 			key := parse_object_key(p, p.allocator) or_return
 			defer delete(key, p.allocator)
 			
 			unmarshal_expect_token(p, .Colon)						
 			
-			fields := reflect.struct_fields_zipped(ti.id)
-
 			field_test :: #force_inline proc "contextless" (field_used: [^]byte, offset: uintptr) -> bool {
 				prev_set := field_used[offset/8] & byte(offset&7) != 0
 				field_used[offset/8] |= byte(offset&7)