Skip to main content

Crate aver_memory

Crate aver_memory 

Source
Expand description

NaN-boxed compact Value representation (8 bytes per value).

Layout: every value is a u64 interpreted as an IEEE 754 f64.

  • Float: any f64 that is NOT a quiet NaN with our marker -> stored directly.
  • Everything else: encoded as a quiet NaN with tag + payload in the mantissa.

IEEE 754 quiet NaN: exponent=0x7FF (all 1s), quiet bit=1, plus our marker bit. We use 0x7FFC as 14-bit prefix (bits 63-50), leaving bits 49-0 free.

63      50 49  46 45                    0
+--------+------+------------------------+
| 0x7FFC | tag  |       payload          |
| 14 bits| 4 bit|       46 bits          |
+--------+------+------------------------+

Tag map: 0 = Immediate payload 0-2: false/true/unit 1 = Symbol payload bits 0-1: fn/builtin/namespace/nullary-variant; rest=symbol index 2 = Int payload bit45: 0=inline(45-bit signed), 1=arena index 3 = String payload bit45: 0=inline small string (len + 5 bytes), 1=arena index 4 = Some payload bit45: 0=inline inner, 1=arena index 5 = None singleton 6 = Ok payload bit45: 0=inline inner, 1=arena index 7 = Err payload bit45: 0=inline inner, 1=arena index 8 = List payload bit45: 0=empty list, 1=arena index 9 = Vector payload bit45: 0=empty vector, 1=arena index 10 = Map payload bit45: 0=empty map, 1=arena index 11 = Record payload bit45: 1=arena index 12 = Variant payload bit45: 1=arena index 13 = Tuple payload bit45: 1=arena index 14 = InlineVariant [45:30]=ctor_id, [29]=kind(0=int,1=imm), [28:0]=value 15 = (reserved)

Structs§

Arena
ArenaUsage
NanValue
PersistentMap
Stub PersistentMap for non-runtime builds (e.g. wasm-compile only).

Enums§

AllocSpace
ArenaEntry
ArenaList
ArenaSymbol
NanString

Constants§

ARENA_REF_BIT
IMM_FALSE
IMM_TRUE
IMM_UNIT
INT_INLINE_MAX
INT_INLINE_MIN
SYMBOL_BUILTIN
SYMBOL_FN
SYMBOL_NAMESPACE
SYMBOL_NULLARY_VARIANT
TAG_ERR
TAG_IMMEDIATE
TAG_INLINE_VARIANT
TAG_INT
TAG_LIST
TAG_MAP
TAG_NONE
TAG_OK
TAG_RECORD
TAG_SOME
TAG_STRING
TAG_SYMBOL
TAG_TUPLE
TAG_VARIANT
TAG_VECTOR
WRAP_ERR
WRAP_OK
WRAP_SOME

Traits§

ArenaTypes
Trait that defines the function and map types used by the arena.
FnValueName
Trait for extracting a display name from a function value.
MapLike
Trait abstracting the persistent-map operations needed by the arena.