runtime: be more strict in GC

With CL 190599, along with what we do in greyobject, we ensure
that we only mark allocated heap objects. As a result we can be
more strict in GC:

- Enable "sweep increased allocation count" check, which checks
  that the number of mark bits set are no more than the number of
  allocation bits.

- Enable invalid pointer check on heap scan. We only trace
  allocated heap objects, which should not contain invalid
  pointer.

This also makes the libgo runtime more convergent with the gc
runtime.

Change-Id: I07d835a02bbbbc661c8f2eb3bffd55fccfafdb44
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190797
Reviewed-by: Ian Lance Taylor <iant@golang.org>
3 files changed