diff --git a/core/cpu/arm/intrinsics/intrinsics.factor b/core/cpu/arm/intrinsics/intrinsics.factor index 4b0a0bf591..9eedd8e494 100755 --- a/core/cpu/arm/intrinsics/intrinsics.factor +++ b/core/cpu/arm/intrinsics/intrinsics.factor @@ -55,10 +55,10 @@ IN: cpu.arm.intrinsics : %write-barrier ( -- ) "val" get operand-immediate? "obj" get fresh-object? or [ "cards_offset" f R12 %alien-global - "scratch" operand R12 "scratch" operand card-bits <LSR> ADD - "val" operand "scratch" operand 0 LDRB + "scratch" operand R12 "obj" operand card-bits <LSR> ADD + "val" operand "scratch" operand 0 <+> LDRB "val" operand dup card-mark ORR - "val" operand "scratch" operand 0 STRB + "val" operand "scratch" operand 0 <+> STRB ] unless ; \ set-slot { @@ -315,12 +315,12 @@ IN: cpu.arm.intrinsics ! Store class "class" operand 2 %set-slot ! Zero out the rest of the tuple - R12 f v>operand MOV - "n" get 1- [ 1+ R12 %fill-array ] each - "out" get object %store-tagged + "initial" operand f v>operand MOV + "n" get 1- [ 1+ "initial" operand %fill-array ] each + "out" get tuple %store-tagged ] H{ { +input+ { { f "class" } { [ inline-array? ] "n" } } } - { +scratch+ { { f "out" } } } + { +scratch+ { { f "out" } { f "initial" } } } { +output+ { "out" } } } define-intrinsic