comparison src/share/vm/utilities/yieldingWorkgroup.hpp @ 1837:c99c53f07c14

6692906: CMS: parallel concurrent marking may be prone to hanging or stalling mutators for periods of time Summary: Inserted missing yield(check)s in closures used during the work-stealing phase of parallel concurrent marking, a missing synchronous yield-request in the cms perm gen allocation path, and a terminator-terminator for the offer_termination invocation that monitors the yield status of the concurrent marking task. Elaborated some documentation comments and made some task queue termination loop flags configurable at start-up to aid debugging in the field. Reviewed-by: jmasa, johnc, poonam
author ysr
date Wed, 29 Sep 2010 16:17:02 -0700
parents 8b10f48633dc
children f95d63e2154a
comparison
equal deleted inserted replaced
1836:894b1d7c7e01 1837:c99c53f07c14
1 /* 1 /*
2 * Copyright (c) 2005, 2010 Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
135 // Subclasses should call the parent's abort() method 135 // Subclasses should call the parent's abort() method
136 // after having done any work specific to the sunbclass. 136 // after having done any work specific to the sunbclass.
137 virtual void abort(); 137 virtual void abort();
138 138
139 Status status() const { return _status; } 139 Status status() const { return _status; }
140 bool yielding() const { return _status == YIELDING; }
140 bool yielded() const { return _status == YIELDED; } 141 bool yielded() const { return _status == YIELDED; }
141 bool completed() const { return _status == COMPLETED; } 142 bool completed() const { return _status == COMPLETED; }
142 bool aborted() const { return _status == ABORTED; } 143 bool aborted() const { return _status == ABORTED; }
143 bool active() const { return _status == ACTIVE; } 144 bool active() const { return _status == ACTIVE; }
144 }; 145 };