- var arr = _array
-
- # Fisrt step: look in the last indexed elt
- if k == _last_accessed_key then return _last_accessed_index
-
- # Compute the base position of the key
- var base = k.hash % _capacity
- if base < 0 then base = - base
-
- # Look for the key in the array
- var cur = base
- loop
- var c = arr[cur]
- if c == null or c._key == k then # REAL equals
- _last_accessed_index = cur
- _last_accessed_key = k
- return cur
- end
- cur -= 1
- if cur < 0 then cur = _capacity - 1
- assert no_loop: cur != base
- if false then break # FIXME remove once unreach loop exits are in c_src
- end
- abort #FIXME remove once unreach loop exits are in c_src