Overview
Comment: | Only use 4 bits to classify tagged pointers
This leaves 28/60 bits for the value. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | tagged-pointers |
Files: | files | file ages | folders |
SHA3-256: |
943cf978435fc8205f6a6c609138d2ac |
User & Date: | js on 2020-07-04 00:24:54 |
Other Links: | branch diff | manifest | tags |
Context
2020-07-04
| ||
00:40 | Use a regular int for the tagged pointer class ID check-in: a8d453813c user: js tags: tagged-pointers | |
00:24 | Only use 4 bits to classify tagged pointers check-in: 943cf97843 user: js tags: tagged-pointers | |
2020-07-01
| ||
21:32 | Merge trunk into branch "tagged-pointers" check-in: 6d5cc25f0c user: js tags: tagged-pointers | |
Changes
Modified src/runtime/lookup-asm/lookup-asm-x86-elf.S from [c25a1420f7] to [6468f2e74c].
︙ | |||
59 60 61 62 63 64 65 66 | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | + + - | 0: call get_eip add eax, offset _GLOBAL_OFFSET_TABLE_ lea eax, [eax+\not_found@GOTOFF] jmp eax .Ltagged_pointer_\name: and dl, 0xF shr dl, 1 movzx edx, dl |
︙ |
Modified src/runtime/lookup-asm/lookup-asm-x86-win32.S from [db823a1fe8] to [6bf3eb314e].
︙ | |||
51 52 53 54 55 56 57 58 | 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | + + - | test eax, eax jz \not_found ret .Ltagged_pointer_\name: and dl, 0xF shr dl, 1 movzx edx, dl |
︙ |
Modified src/runtime/lookup-asm/lookup-asm-x86_64-elf.S from [14d6290458] to [00fefd9a7f].
︙ | |||
52 53 54 55 56 57 58 59 | 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | + + - | test rax, rax jz short \not_found@PLT ret .Ltagged_pointer_\name: and dil, 0xF shr dil, 1 movzx r8, dil |
︙ |
Modified src/runtime/lookup-asm/lookup-asm-x86_64-win64.S from [c889c864a2] to [069968302a].
︙ | |||
58 59 60 61 62 63 64 65 | 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | + + - | 0: mov rcx, r10 mov rdx, r11 jmp \not_found .Ltagged_pointer_\name: and cl, 0xF shr cl, 1 movzx r8, cl |
︙ |
Modified src/runtime/tagged-pointer.m from [3ba8d16fba] to [1f64e311ce].
︙ | |||
15 16 17 18 19 20 21 | 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | + - + | * file. */ #import "ObjFWRT.h" #import "private.h" #define TAGGED_POINTER_BITS 4 |
︙ | |||
45 46 47 48 49 50 51 | 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | - + - - + - + - + | } Class object_getTaggedPointerClass(id object) { uintptr_t pointer = (uintptr_t)object; |