1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; UrForth level
1: self
-hosting
32-bit Forth compiler
4 ;; Copyright
(C
) 2020 Ketmar Dark
// Invisible Vector
6 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10 defer
-not
-yet tc
-str
-name
-hash
-real-addr
( addr count
-- u32hash
)
12 :noname
;; setup name hashing
function
14 tc
-nhash
-elf of
['] tc-str-name-hash-elf endof
15 tc-nhash-joaat of ['] tc
-str
-name
-hash
-joaat endof
16 tc
-nhash
-rot of
['] tc-str-name-hash-rot endof
17 abort" unknown name hash type"
19 dup to tc-str-name-hash-real-addr execute
20 ; to tc-str-name-hash-real-addr
22 : tc-str-name-hash ( rva-addr count -- u32hash )
23 swap tc->real swap tc-str-name-hash-real-addr
26 : tc-name-hash-fold-mask ( u32hash -- folded-masked-hash )
27 uhash32->8 -1 forth-hashtable-bits lshift bitnot and