RFR(XL): 8181917: Refactor UL LogStreams to avoid using resource area

Marcus Larsson marcus.larsson at oracle.com
Wed Jun 21 10:18:50 UTC 2017


On 2017-06-21 09:29, Thomas Stüfe wrote:
> Hi Marcus,
> thank you for reviewing!
> New webrev: 
> http://cr.openjdk.java.net/~stuefe/webrevs/8181917-refactor-ul-logstream/all.webrev.01/webrev/ 
> <http://cr.openjdk.java.net/%7Estuefe/webrevs/8181917-refactor-ul-logstream/all.webrev.01/webrev/>
> Delta to last version: 
> http://cr.openjdk.java.net/~stuefe/webrevs/8181917-refactor-ul-logstream/delta-all-00-to-01/webrev/ 
> <http://cr.openjdk.java.net/%7Estuefe/webrevs/8181917-refactor-ul-logstream/delta-all-00-to-01/webrev/>
> Changes:
> - classfile/loaderConstraints.cpp: as you suggested, I fixed up all 
> cases of "superfluous LogStream usage" I found and converted them to 
> direct LogTarget::print() calls.
> - classfile/sharedPathsMiscInfo.cpp: here I opted for removing any 
> notion of UL from this method, instead I just hand in an 
> outputStream*. Both the "is_enabled" check and the LogStream creation 
> is now handed in the caller frame. I also added a trailing cr().
> - gc/cms/compactibleFreeListSpace.cpp: removed the superfluous 
> ResourceMark
> - logging/logStream.hpp: enabled the private operator new() 
> declarations to disable heap allocations for class LogStream. I also 
> gave it a try, works fine, if you do new(), now you get a linker error.
> The rest of the changes is concerned with the removal of 
> "LogStreamCHeap" which is not needed anymore. Note that I found some 
> new instances of "unguarded printing" and I updated comments at 
> JDK-8182466 <https://bugs.openjdk.java.net/browse/JDK-8182466> .
> Thanks & Regards, Thomas

This looks great.

One last thing just hit me: We should have a unit test to cover the 
allocation case for LogStream. Preferably one that forces it to grow 
twice (once from stackbuffer, and once from heap), to make sure we 
exercise that code.


More information about the hotspot-dev mailing list