gc: remove erroneous file
Signed-off-by: Stephen J Day <stephen.day@docker.com>
This commit is contained in:
parent
752fc2cc46
commit
b52cf8b440
1 changed files with 0 additions and 69 deletions
69
gc/2
69
gc/2
|
@ -1,69 +0,0 @@
|
|||
package gc
|
||||
|
||||
type color uint8
|
||||
|
||||
const (
|
||||
white = iota
|
||||
gray
|
||||
black
|
||||
)
|
||||
|
||||
func tricolor(roots []string, all []string, refs map[string][]string) []string {
|
||||
// all objects white -> default value of color
|
||||
state := make(map[string]color, len(all))
|
||||
var (
|
||||
grays []string
|
||||
reachable []string
|
||||
)
|
||||
|
||||
grays = append(grays, roots...)
|
||||
// root-set objects gray.
|
||||
for _, ro := range roots {
|
||||
state[ro] = gray
|
||||
}
|
||||
|
||||
// (Repeat this as long as there are gray coloured objects) Pick a gray
|
||||
// object. Colour all objects referenced to from that gray object gray too.
|
||||
// (Except those who are black). And colour itself black.
|
||||
|
||||
// Pick any gray object
|
||||
for id := findcolor(state, gray); id != ""; id = findcolor(state, gray) {
|
||||
// mark all the referenced objects as gray
|
||||
for _, target := range refs[id] {
|
||||
if state[target] == white {
|
||||
state[target] = gray
|
||||
}
|
||||
}
|
||||
state[id] = black
|
||||
}
|
||||
|
||||
// All black objects are now reachable, and all white objects are
|
||||
// unreachable. Free those that are white!
|
||||
var whites []string
|
||||
for _, obj := range all {
|
||||
if state[obj] == white {
|
||||
whites = append(whites, obj)
|
||||
}
|
||||
}
|
||||
|
||||
return whites
|
||||
}
|
||||
|
||||
func findcolor(cs map[string]color, q color) string {
|
||||
// TODO(stevvooe): Super-inefficient!
|
||||
for id, c := range cs {
|
||||
if c == q {
|
||||
return id
|
||||
}
|
||||
}
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
// type colorset struct {
|
||||
// state map[string]color
|
||||
// }
|
||||
|
||||
// func (cs *colorset) mark(id string, c color) {
|
||||
// cs.state[id] = c
|
||||
// }
|
Loading…
Reference in a new issue