< prev index next >
src/share/vm/gc/g1/satbMarkQueue.cpp
Print this page
rev 10336 : [mq]: inc1
*** 1,7 ****
/*
! * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 126,141 ****
for ( ; src < dst; ++src) {
// Search low to high for an entry to keep.
void* entry = *src;
if (retain_entry(entry, g1h)) {
// Found keeper. Search high to low for an entry to discard.
! while ((src < --dst) && retain_entry(*dst, g1h)) { }
! if (src >= dst) break; // Done if no discard found.
*dst = entry; // Replace discard with keeper.
}
}
! assert(src == dst, "invariant");
_index = pointer_delta(dst, buf, 1);
}
// This method will first apply the above filtering to the buffer. If
// post-filtering a large enough chunk of the buffer has been cleared
--- 126,146 ----
for ( ; src < dst; ++src) {
// Search low to high for an entry to keep.
void* entry = *src;
if (retain_entry(entry, g1h)) {
// Found keeper. Search high to low for an entry to discard.
! while (src < --dst) {
! if (!retain_entry(*dst, g1h)) {
*dst = entry; // Replace discard with keeper.
+ break;
}
}
! // If discard search failed (src == dst), the outer loop will also end.
! }
! }
! // dst points to the lowest retained entry, or the end of the buffer
! // if all the entries were filtered out.
_index = pointer_delta(dst, buf, 1);
}
// This method will first apply the above filtering to the buffer. If
// post-filtering a large enough chunk of the buffer has been cleared
< prev index next >