X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=temp.asm;h=932b1bb3e9e26bf4bf9d3fce01cbc231bbc171af;hb=cabd8413c10848728efcc2b869f631294f755d4d;hp=7ece59078005ddfdcc740aba3d82c3afcbfa06f1;hpb=5387cfd8dc337d3b83d731c91a2359c4654018da;p=rrq%2Frrqforth.git diff --git a/temp.asm b/temp.asm index 7ece590..932b1bb 100644 --- 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 @@ -29,19 +31,23 @@ 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