%write-barrier ( src slot scale tag temp1 temp2 -- )
CPU architecture description model

Prev:%slot-imm ( dst obj slot tag -- )
Next:%spill ( src rep dst -- )


Inputs and outputs
srca register symbol
slota register symbol
scalean integer
tagan integer
temp1a register symbol
temp2a register symbol

Word description
Generates code for the ##write-barrier instruction.


USING: cpu.architecture make tools.disassembler ; init-relocation [ RAX RBX 3 -14 RCX RDX %write-barrier ] B{ } make disassemble 000000000143f960: 488d4cd80e lea rcx, [rax+rbx*8+0xe] 000000000143f965: 48c1e908 shr rcx, 0x8 000000000143f969: 48ba0000000000000000 mov rdx, 0x0 000000000143f973: 48c60411c0 mov byte [rcx+rdx], 0xc0 000000000143f978: 48c1e90a shr rcx, 0xa 000000000143f97c: 48ba0000000000000000 mov rdx, 0x0 000000000143f986: 48c60411c0 mov byte [rcx+rdx], 0xc0


HOOK: %write-barrier cpu ( src slot scale tag temp1 temp2 -- )


M:: x86 %write-barrier ( src slot scale tag temp1 temp2 -- )
temp1 src slot scale tag (%slot) LEA
temp1 temp2 (%write-barrier) ;