 : generate-write-barrier ( -- )
     #! Mark the card pointed to by vreg.
     "val" get operand-immediate? "obj" get fresh-object? or [
-        "obj" operand PUSH
-
         ! Mark the card
         "obj" operand card-bits SHR
         "cards_offset" f temp-reg v>operand %alien-global

    {
        [ %slot-any "val" operand MOV generate-write-barrier ] H{
            { +input+ { { f "val" } { f "obj" } { f "n" } } }
            { +clobber+ { "n" } }
        }
    }
} define-intrinsics

        "obj" operand deck-bits card-bits - SHR
        "decks_offset" f temp-reg v>operand %alien-global
        temp-reg v>operand "obj" operand [+] card-mark <byte> MOV
    ] unless ;

\ set-slot {
