gencgc: Extract go/no-go decision logic from preserve_pointer().