/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#include "precompiled.hpp"
#include "memory/allocation.inline.hpp"
#include "utilities/bitMap.inline.hpp"
#ifdef TARGET_OS_FAMILY_linux
# include "os_linux.inline.hpp"
#endif
#ifdef TARGET_OS_FAMILY_solaris
# include "os_solaris.inline.hpp"
#endif
#ifdef TARGET_OS_FAMILY_windows
# include "os_windows.inline.hpp"
#endif
#ifdef TARGET_OS_FAMILY_bsd
# include "os_bsd.inline.hpp"
#endif
{
}
{
}
if (in_resource_area) {
} else {
}
}
if (new_size_in_words > old_size_in_words) {
}
}
// With a valid range (beg <= end), this test ensures that end != 0, as
// required by inverted_bit_mask_for_range. Also avoids an unnecessary write.
}
}
// With a valid range (beg <= end), this test ensures that end != 0, as
// required by inverted_bit_mask_for_range. Also avoids an unnecessary write.
}
}
// With a valid range (beg <= end), this test ensures that end != 0, as
// required by inverted_bit_mask_for_range. Also avoids an unnecessary write.
while (true) {
if (res == w) break;
w = *pw;
}
}
}
if (beg_full_word < end_full_word) {
// The range includes at least one full word.
} else {
// The range spans at most 2 partial words.
}
}
if (beg_full_word < end_full_word) {
// The range includes at least one full word.
} else {
// The range spans at most 2 partial words.
}
}
"the range must include at least 32 bytes");
// The range includes at least one full word.
}
"the range must include at least 32 bytes");
// The range includes at least one full word.
}
if (value) {
} else {
}
}
// Return true to indicate that this thread changed
// the bit, false to indicate that someone else did.
// In either case, the requested bit is in the
// requested state some time during the period that
// this thread is executing this call. More importantly,
// if no other thread is executing an action to
// change the requested bit to a state other than
// the one that this thread is trying to set it to,
// then the the bit is in the expected state
// at exit from this method. However, rather than
// make such a strong assertion here, based on
// assuming such constrained use (which though true
// today, could change in the future to service some
// funky parallel algorithm), we encourage callers
// to do such verification, as and when appropriate.
}
}
}
if (value) {
} else {
}
}
if (beg_full_word < end_full_word) {
// The range includes at least one full word.
if (value) {
} else {
}
} else {
// The range spans at most 2 partial words.
}
}
if (value) {
} else {
}
}
"the range must include at least 32 bytes");
// The range includes at least one full word.
if (value) {
} else {
}
}
// If this has more bits set than dest_map[index], then other is not a
// subset.
}
return true;
}
}
// Otherwise, no intersection.
return false;
}
}
}
}
}
}
}
// XXX Ideally, we would remove this restriction.
"Only handle aligned cases so far.");
}
}
bool changed = false;
}
return changed;
}
bool changed = false;
}
return changed;
}
bool changed = false;
}
return changed;
}
}
}
}
return true;
}
word++;
}
}
word++;
}
}
}
// Note that if the closure itself modifies the bitmap
// then modifications in and to the left of the _bit_ being
// currently sampled will not be seen. Note also that the
// interval [leftOffset, rightOffset) is right open.
if (rest & 1) {
// resample at each closure application
// (see, for instance, CMS bug 4525989)
}
}
}
return true;
}
if (_pop_count_table == NULL) {
for (uint i = 0; i < 256; i++) {
table[i] = num_set_bits(i);
}
(intptr_t*) &_pop_count_table,
}
}
}
while (w != 0) {
while ((w & 1) == 0) {
w >>= 1;
}
bits++;
w >>= 1;
}
return bits;
}
return _pop_count_table[c];
}
init_pop_count_table(); // If necessary.
typedef unsigned char uchar;
for (idx_t i = 0; i < size_in_words(); i++) {
w >>= 8;
}
}
return sum;
}
#ifndef PRODUCT
}
}
#endif
{
}
{
}