-
Enhancement
-
Resolution: Delivered
-
P4
-
17
PtrQueue provides enqueue (and enqueue_known_active) to add a value to the queue. Part of this is a protocol for the PtrQueue to hand off the current buffer to the associated PtrQueueSet, with several virtual functions involved in one or both classes to handle various special cases, such that each of the three extent derivation lines overrides or extends different parts in sometimes tricky ways. There's also some loss of type checking within these base classes and required casting in the derived classes as a result.
This could be simplified by making PtrQueue a dump data container and having all of the specialized behavior in the PtrQueueSet subclasses, with some supporting functions in PtrQueueSet.
This isn't expected to directly provide any performance benefits [1]. However, by providing better separation it will make it easier to make additional changes for performance to individual deriviation lines without having to potentially touch everything in the hierarchy, including hand coded assembly for every target platform.
[1] One benefit would be reducing the size of the queue objects in the thread-local data, possibly with some small caching benefit.
This could be simplified by making PtrQueue a dump data container and having all of the specialized behavior in the PtrQueueSet subclasses, with some supporting functions in PtrQueueSet.
This isn't expected to directly provide any performance benefits [1]. However, by providing better separation it will make it easier to make additional changes for performance to individual deriviation lines without having to potentially touch everything in the hierarchy, including hand coded assembly for every target platform.
[1] One benefit would be reducing the size of the queue objects in the thread-local data, possibly with some small caching benefit.
- duplicates
-
JDK-8256280 Improve locality of PtrQueue instances in G1 thread local data
- Closed
1.
|
Move PtrQueue enqueue to PtrQueueSet subclasses | Resolved | Kim Barrett | ||
2.
|
Move PtrQueue flush to PtrQueueSet subclasses | Resolved | Kim Barrett | ||
3.
|
Move PtrQueue active flag to SATBMarkQueue | Resolved | Kim Barrett | ||
4.
|
Merge G1RedirtyCardsQueue into qset | Resolved | Kim Barrett | ||
5.
|
Move PtrQueue reset to PtrQueueSet subclasses | Resolved | Kim Barrett |