RFR: 8153659: Create a CHeap backed LogStream class

Stefan Karlsson stefan.karlsson at oracle.com
Wed Apr 6 17:54:50 UTC 2016


Hi all,

Please review this patch to add a LogStream class that allocates its 
backing buffer from CHeap memory instead of Resource memory.

http://cr.openjdk.java.net/~stefank/8153659/webrev.01
https://bugs.openjdk.java.net/browse/JDK-8153659

The main motivation for this is that we can't use Resource allocated 
memory during initialization, until Thread::current() has been 
initialized. So, a CHeap backed LogStream is desirable when we execute, 
for example, the following code during large pages initialization:

void os::trace_page_sizes(const char* str, const size_t* page_sizes, int 
count)
{
   if (TracePageSizes) {
     tty->print("%s: ", str);
     for (int i = 0; i < count; ++i) {
       tty->print(" " SIZE_FORMAT, page_sizes[i]);
     }
     tty->cr();
   }
}

The patch restructures the code and creates a LogStreamBase template 
base class, which takes the backing outputStream class as a template 
parameter. We then have three concrete LogStream classes:

  LogStream - Buffer resource allocated with an embedded ResourceMark
  LogStreamNoResourceMark - Buffer resource allocated without an 
embedded ResourceMark
  LogStreamCHeap - Buffer CHeap allocated

I moved the LogStream class from the logStream.inline.hpp file to 
logStream.hpp, for consistency. If that's causing problems while 
reviewing this, I can move it in a separate patch.

Tested with JPRT with the TracePageSizes patch ( JDK-8152491) and 
internal VM tests.

Thanks,
StefanK


More information about the hotspot-dev mailing list