RFR: 8152635: Create a UL class to represent a Log + Level combination

Stefan Karlsson stefan.karlsson at oracle.com
Tue Mar 29 13:46:44 UTC 2016


Hi all,

Please review this patch to introduce a Unified Logging class to 
describe a combination of a tagset and a log level.

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

The patch is applied on top of the patch in:
http://mail.openjdk.java.net/pipermail/hotspot-dev/2016-March/022302.html

With this class we could write code as:
LogTarget(Debug, gc, heap) log;
if (log.is_enabled()) {
   log.print(...);
   log.print(...);
   ... = log.stream();
}

instead of the current model:
Log(gc, heap) log;
if (log.is_debug()) {
   log.debug(...)
   log.debug(...)
   ... = log.debug_stream():
}

The LogTarget class/macro ensures that we only mention the log level 
once, so that we don't accidentally log to the wrong level. The previous 
version forces the coder to repeat 'debug' four times.

One example where the wrong log level has been used:
https://bugs.openjdk.java.net/browse/JDK-8152962

I've converted one function in compactibleFreeListSpace.cpp to show how 
to use the new class.

Test: new internal vm test, jprt

Thanks,
StefanK


More information about the hotspot-dev mailing list