The ParallelGC invoke() and invoke_no_policy() methods should return a value to indicate whether a gc was done or not. When different types of collections can occur, the return value should indicate the type of collection.
The simplest solution is to return a boolean indicating whether a gc was done. PSScavenge::invoke() is different in that it can invoke a young gc, full gc, or no gc (i.e., if GCLocker has locked out gc). Returning true if a full gc was done and false otherwise is enough to satisfy current needs. That is slightly quirky, but will be revisited.