RFR: 8212827: GlobalCounter should support nested critical sections

Kim Barrett kim.barrett at oracle.com
Mon Oct 29 17:54:13 UTC 2018


> On Oct 28, 2018, at 3:41 PM, Robbin Ehn <robbin.ehn at oracle.com> wrote:
> 
> Hi Kim,
> 
> Looks good, thanks!

Thanks.

> 
> /Robbin
> 
> On 26/10/2018 22:16, Kim Barrett wrote:
>>> On Oct 26, 2018, at 4:06 AM, Robbin Ehn <robbin.ehn at oracle.com> wrote:
>>> I would like the return value here:
>>> inline uintx GlobalCounter::critical_section_begin(Thread *thread) {
>>> And thus the parameter here:
>>> 46 inline void GlobalCounter::critical_section_end(Thread *thread, uintx begin_value) {
>>> be an opaque type so we don't leak out the implementation, but as long as the
>>> GlobalCounter have the implementation as name, that doesn't help much.
>>> 
>>> I'm thinking of something like:
>>> inline RCUContext RCU::critical_section_begin(Thread *thread) {
>>> inline void RCU::critical_section_end(Thread *thread, RCUContext context) {
>>> Or
>>> inline CSContext CriticalSection::begin(Thread *thread) {
>>> inline void CriticalSection::end(Thread *thread, CSContext context) {
>> Giving this value it's own type name seems like a good idea.  I didn't
>> want to go so far as an actual class wrapper though, so just added a
>> typedef for CSContext, even though that's weak.  Better would be a
>> C++11 enum class, e.g.
>>   enum class CSContext : uintx {};
>> I've written the code as if it was that (e.g. using static_casts for
>> conversions where needed).  I'll file an RFE to change the type,
>> blocked by the C++11/14 JEP.
>> Making that change required adding an #include of globalCounter.hpp to
>> concurrentHashTable.hpp. While there, I added a couple more obviously
>> missing #includes to that file.  I didn't verify that what I added was
>> sufficient to #include this file without other preceeding #includes.
>> There were enough changes involved in this that I'm providing new
>> webrevs for your consideration:
>> full: http://cr.openjdk.java.net/~kbarrett/8212827/open.01/
>> incr: http://cr.openjdk.java.net/~kbarrett/8212827/open.01.inc/
>> Testing: local (linux-x64) tier1.




More information about the hotspot-dev mailing list