-
Enhancement
-
Resolution: Fixed
-
P4
-
7u4
-
b12
-
generic
-
generic
-
Not verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2220612 | 8 | John Cuthbertson | P4 | Resolved | Fixed | b24 |
JDK-2220548 | 7u4 | John Cuthbertson | P4 | Closed | Fixed | b10 |
While analysing performance data from benchmark runs using the changes in 6484965 (Piggy-back liveness accounting phase on marking) it was observed that there were a high number of mispredicted branches coming from CMTask::do_marking_step().
Further analysis indicated that these mispredicted branches were the actual call of the BitMap::iterate function. This is caused by a couple of reasons - first BitMap::iterate is defined in the .cpp file and so cannot be inlined.
We might be able to do better by actually implementing a version of the "iterate" routine using inline-able routines from BitMap and using the object sizes to increase the granularity of the iteration.
Further analysis indicated that these mispredicted branches were the actual call of the BitMap::iterate function. This is caused by a couple of reasons - first BitMap::iterate is defined in the .cpp file and so cannot be inlined.
We might be able to do better by actually implementing a version of the "iterate" routine using inline-able routines from BitMap and using the object sizes to increase the granularity of the iteration.
- backported by
-
JDK-2220612 G1: High number of mispredicted branches while iterating over the marking bitmap
- Resolved
-
JDK-2220548 G1: High number of mispredicted branches while iterating over the marking bitmap
- Closed