1 USING: compiler.cfg.instructions compiler.cfg.write-barrier
3 IN: compiler.cfg.write-barrier.tests
5 ! Do need a write barrier on a random store.
9 T{ ##set-slot f 2 1 3 }
10 T{ ##write-barrier f 1 3 }
15 T{ ##set-slot f 2 1 3 }
16 T{ ##write-barrier f 1 3 }
23 T{ ##set-slot-imm f 2 1 }
24 T{ ##write-barrier-imm f 1 }
29 T{ ##set-slot-imm f 2 1 }
30 T{ ##write-barrier-imm f 1 }
34 ! Don't need a write barrier on freshly allocated objects.
38 T{ ##set-slot f 2 1 3 }
43 T{ ##set-slot f 2 1 3 }
44 T{ ##write-barrier f 1 3 }
51 T{ ##set-slot-imm f 2 1 }
56 T{ ##set-slot-imm f 2 1 }
57 T{ ##write-barrier-imm f 1 }
61 ! Do need a write barrier if there's a subroutine call between
62 ! the allocation and the store.
67 T{ ##set-slot f 2 1 3 }
68 T{ ##write-barrier f 1 3 }
74 T{ ##set-slot f 2 1 3 }
75 T{ ##write-barrier f 1 3 }
83 T{ ##set-slot-imm f 2 1 }
84 T{ ##write-barrier-imm f 1 }
90 T{ ##set-slot-imm f 2 1 }
91 T{ ##write-barrier-imm f 1 }
99 T{ ##set-slot-imm f 3 1 }
100 T{ ##write-barrier-imm f 2 }
105 T{ ##set-slot-imm f 3 1 }
106 T{ ##write-barrier-imm f 2 }
107 } write-barriers-step
113 T{ ##set-slot-imm f 3 2 }
114 T{ ##write-barrier-imm f 1 }
119 T{ ##set-slot-imm f 3 2 }
120 T{ ##write-barrier-imm f 1 }
121 } write-barriers-step
128 T{ ##set-slot-imm f 3 1 }
129 T{ ##write-barrier-imm f 2 }
135 T{ ##set-slot-imm f 3 1 }
136 T{ ##write-barrier-imm f 2 }
137 } write-barriers-step
144 T{ ##set-slot-imm f 4 1 }
145 T{ ##write-barrier-imm f 3 }
151 T{ ##set-slot-imm f 4 1 }
152 T{ ##write-barrier-imm f 3 }
153 } write-barriers-step