void map_put_uint64_from_uint64(ulong key, ulong val) { Ion.assert(key != 0); if (val == 0) { return; } if (2 * len >= cap) { map_grow(2 * cap); } Ion.assert(2 * len < cap); Ion.assert(Ion.IS_POW2(cap)); for (var i = key; ; i++) { i &= cap - 1; if (keys[i] == 0) { len++; keys[i] = key; vals[i] = val; return; } if (keys[i] == key) { vals[i] = val; return; } } }
ulong map_get_uint64_from_uint64(ulong key) { if (len == 0) { return(0); } Ion.assert(Ion.IS_POW2(cap)); Ion.assert(len < cap); for (var i = key; ; i++) { i &= cap - 1; if (keys[i] == key) { return(vals[i]); } if (keys[i] == 0) { return(0); } } }