mirror of
https://github.com/RGBCube/serenity
synced 2026-01-20 03:41:05 +00:00
JS::Value stores 48 bit pointers to separately allocated objects in its payload. On x86-64, canonical addresses have their top 16 bits set to the same value as bit 47, effectively meaning that the value has to be sign-extended to get the pointer. AArch64, however, expects the topmost bits to be all zeros. This commit gates sign extension behind `#if ARCH(X86_64)`, and adds an `#error` for unsupported architectures, so that we do not forget to think about pointer handling when porting to a new architecture. Fixes #15290 Fixes SerenityOS/ladybird#56 |
||
|---|---|---|
| .. | ||
| BlockAllocator.cpp | ||
| BlockAllocator.h | ||
| Cell.h | ||
| CellAllocator.cpp | ||
| CellAllocator.h | ||
| DeferGC.h | ||
| GCPtr.h | ||
| Handle.cpp | ||
| Handle.h | ||
| Heap.cpp | ||
| Heap.h | ||
| HeapBlock.cpp | ||
| HeapBlock.h | ||
| MarkedVector.cpp | ||
| MarkedVector.h | ||