identify TEMPUSED properly
[rrq/rrqforth.git] / temp.asm
index 7ece59078005ddfdcc740aba3d82c3afcbfa06f1..932b1bb3e9e26bf4bf9d3fce01cbc231bbc171af 100644 (file)
--- a/temp.asm
+++ b/temp.asm
@@ -11,6 +11,8 @@
        ;; Holds size and address of the object space.
        dq 1073741824 ; [0] Total object space size (request size)
        dq 0 ; [8] Object space base address.
+
+       WORD p_tempused,'TEMPUSED',dovariable
        dq 0 ; [16] Currently used.
 
        WORD p_tempheld,'TEMPHELD',dovariable
        DOFORTH p_malloc
        pop qword [p_objectspace_DFA+8]
 p_objecthole_initialized:
+       mov rax,qword [p_tempheld_DFA]
+       cmp rax,qword [p_tempused_DFA]
+       jl p_objecthole_recycle
        mov rax,qword [rsp]
-       add rax,qword [p_objectspace_DFA+16]
+       add rax,qword [p_tempused_DFA]
        cmp rax,qword [p_objectspace_DFA]
        jl p_objecthole_from_tail
        mov rax,qword [p_tempheld_DFA] ; cycling back to here
-       mov qword [p_objectspace_DFA+16],rax
+p_objecthole_recycle:
+       mov qword [p_tempused_DFA],rax
        add rax,qword [rsp]
 p_objecthole_from_tail:
        ;; rax = new usage count
-       mov rbx,qword [p_objectspace_DFA+16]
+       mov rbx,qword [p_tempused_DFA]
        add rbx,qword [p_objectspace_DFA+8]
        mov qword [rsp],rbx
-       mov qword [p_objectspace_DFA+16],rax
+       mov qword [p_tempused_DFA],rax
        popr rsi
        next