mov qword [p_objectspace_DFA+16],0
mov rax,qword [rsp]
p_objecthole_from_tail:
+ ;; rax = new usage count
mov rbx,qword [p_objectspace_DFA+16]
mov qword [p_objectspace_DFA+16],rax
add rbx,qword [p_objectspace_DFA+8]
popr rsi
next
- WORD p_str2temp,'STR>TEMP'
+ WORD p_str2temp,'STR>TEMP',fasm
;; ( char* n -- char* n )
;; Capture a given [n:char*] string as a new temp object with
;; leading size cell.
- dq p_dup, p_gtR ; ( -- char* n ) [ n ]
- dq p_dup, p_literal, 8, p_plus ; ( -- char* n n+8 )
- dq p_temp ; ( -- char* n addr )
- dq p_2dup, p_put
- dq p_literal, 8, p_plus ; ( -- char* n addr+8 ) [ n ]
- dq p_dup, p_gtR ; ( -- char* n addr+8 ) [ n addr+8 ]
- dq p_swap, p_strncpy ; ( -- ) [ n addr+8 ]
- dq p_Rgt, p_Rgt ; ( -- addr+8 n ) [ ]
- dq p_return
+ pushr rsi
+ mov rax,qword [rsp]
+ add rax,8
+ push rax
+ DOFORTH p_temp ; ( -- char* n addr )
+ pop rax
+ pop rbx
+ mov qword[rax],rbx
+ add rax,8
+ pop rcx
+ push rax
+ push rbx
+ push rcx
+ push rax
+ push rbx ; ( -- addr n char* addr n )
+ DOFORTH p_strncpy
+ popr rsi
+ next