diff options
| author | dozn <16659513+dozn@users.noreply.github.com> | 2024-12-05 07:23:34 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-05 07:23:34 -0800 |
| commit | 37fb2754a1d98cd3b8738717183543924c66524b (patch) | |
| tree | ea29f4d384edb5df6ae75c73a142acb823b3362b /core/encoding/json | |
| parent | f7761ebcc4dd22ae98335c3845e07e496c010ee4 (diff) | |
Move Struct Field Zipping Outside of JSON Token Loop
Diffstat (limited to 'core/encoding/json')
| -rw-r--r-- | core/encoding/json/unmarshal.odin | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/core/encoding/json/unmarshal.odin b/core/encoding/json/unmarshal.odin index 447397de4..33fd104b7 100644 --- a/core/encoding/json/unmarshal.odin +++ b/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) |