RFR: Verifier should avoid pushing on
Zhengyu Gu
zgu at redhat.com
Tue Aug 1 17:44:29 UTC 2017
Okay.
-Zhengyu
On 08/01/2017 01:34 PM, Aleksey Shipilev wrote:
> This little change cuts down testing time for about 30%:
>
> $ hg diff
> diff -r b514d97e3d24 src/share/vm/gc/shenandoah/shenandoahVerifier.cpp
> --- a/src/share/vm/gc/shenandoah/shenandoahVerifier.cpp Tue Aug 01 17:33:56 2017 +0200
> +++ b/src/share/vm/gc/shenandoah/shenandoahVerifier.cpp Tue Aug 01 19:26:00 2017 +0200
> @@ -607,12 +607,15 @@
> oop obj = oop(addr);
> cl.verify_oop_standalone(obj);
>
> - // Verify everything reachable from that object too:
> - stack.push(obj);
> + // Verify everything reachable from that object too, hopefully realizing
> + // everything was already marked, and never touching further:
> + cl.verify_oops_from(obj);
> + (*processed)++;
> +
> while (!stack.is_empty()) {
> - (*processed)++;
> ShenandoahVerifierTask task = stack.pop();
> cl.verify_oops_from(task.obj());
> + (*processed)++;
> }
> }
> };
>
> The reason is, doing the initial Stack.push() is costly when stack is empty, which it almost always is.
>
> Thanks,
> -Aleksey
>
More information about the shenandoah-dev
mailing list