diff --git a/src/vm/mem/mod.rs b/src/vm/mem/mod.rs index 61fbf20..f20f478 100644 --- a/src/vm/mem/mod.rs +++ b/src/vm/mem/mod.rs @@ -114,9 +114,7 @@ fn collect_garbage( for stack_value in stack { match stack_value { DvmValue::Object(gc) => { - if gc.color() == GcColor::White { - gray_stack.push(gc.clone()); - } + gray_stack.push(gc.clone()); } _ => {} } @@ -126,7 +124,9 @@ fn collect_garbage( for field in current.data().borrow().fields() { match field { DvmValue::Object(object) => { - gray_stack.push(object.clone()); + if object.color() == GcColor::White { + gray_stack.push(object.clone()); + } } _ => {} }