compiler.cfg.write-barrier: fix soundness issue with ##copy that never came up but probably should've been fixed anyway
parent
a605d5c9c9
commit
a67c7c5739
|
@ -91,3 +91,64 @@ IN: compiler.cfg.write-barrier.tests
|
||||||
T{ ##write-barrier-imm f 1 }
|
T{ ##write-barrier-imm f 1 }
|
||||||
} write-barriers-step
|
} write-barriers-step
|
||||||
] unit-test
|
] unit-test
|
||||||
|
|
||||||
|
! ##copy instructions
|
||||||
|
[
|
||||||
|
V{
|
||||||
|
T{ ##copy f 2 1 }
|
||||||
|
T{ ##set-slot-imm f 3 1 }
|
||||||
|
T{ ##write-barrier-imm f 2 }
|
||||||
|
}
|
||||||
|
] [
|
||||||
|
V{
|
||||||
|
T{ ##copy f 2 1 }
|
||||||
|
T{ ##set-slot-imm f 3 1 }
|
||||||
|
T{ ##write-barrier-imm f 2 }
|
||||||
|
} write-barriers-step
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[
|
||||||
|
V{
|
||||||
|
T{ ##copy f 2 1 }
|
||||||
|
T{ ##set-slot-imm f 3 2 }
|
||||||
|
T{ ##write-barrier-imm f 1 }
|
||||||
|
}
|
||||||
|
] [
|
||||||
|
V{
|
||||||
|
T{ ##copy f 2 1 }
|
||||||
|
T{ ##set-slot-imm f 3 2 }
|
||||||
|
T{ ##write-barrier-imm f 1 }
|
||||||
|
} write-barriers-step
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[
|
||||||
|
V{
|
||||||
|
T{ ##copy f 2 1 }
|
||||||
|
T{ ##copy f 3 2 }
|
||||||
|
T{ ##set-slot-imm f 3 1 }
|
||||||
|
T{ ##write-barrier-imm f 2 }
|
||||||
|
}
|
||||||
|
] [
|
||||||
|
V{
|
||||||
|
T{ ##copy f 2 1 }
|
||||||
|
T{ ##copy f 3 2 }
|
||||||
|
T{ ##set-slot-imm f 3 1 }
|
||||||
|
T{ ##write-barrier-imm f 2 }
|
||||||
|
} write-barriers-step
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[
|
||||||
|
V{
|
||||||
|
T{ ##copy f 2 1 }
|
||||||
|
T{ ##copy f 3 2 }
|
||||||
|
T{ ##set-slot-imm f 4 1 }
|
||||||
|
T{ ##write-barrier-imm f 3 }
|
||||||
|
}
|
||||||
|
] [
|
||||||
|
V{
|
||||||
|
T{ ##copy f 2 1 }
|
||||||
|
T{ ##copy f 3 2 }
|
||||||
|
T{ ##set-slot-imm f 4 1 }
|
||||||
|
T{ ##write-barrier-imm f 3 }
|
||||||
|
} write-barriers-step
|
||||||
|
] unit-test
|
||||||
|
|
|
@ -50,7 +50,7 @@ M: gc-map-insn eliminate-write-barrier
|
||||||
fresh-allocations get clear-assoc ;
|
fresh-allocations get clear-assoc ;
|
||||||
|
|
||||||
M: ##copy eliminate-write-barrier
|
M: ##copy eliminate-write-barrier
|
||||||
[ src>> ] [ dst>> ] bi copies get set-at t ;
|
[ src>> resolve-copy ] [ dst>> ] bi copies get set-at t ;
|
||||||
|
|
||||||
M: insn eliminate-write-barrier drop t ;
|
M: insn eliminate-write-barrier drop t ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue