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 }
|
||||
} write-barriers-step
|
||||
] 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 ;
|
||||
|
||||
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 ;
|
||||
|
||||
|
|
Loading…
Reference in New Issue