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;
|