RFR: 8153658: Redundant memory copy in LogStreamNoResourceMark

Kim Barrett kim.barrett at oracle.com
Thu Apr 7 05:17:51 UTC 2016


> On Apr 6, 2016, at 1:30 PM, Stefan Karlsson <stefan.karlsson at oracle.com> wrote:
> 
> Hi all,
> 
> Please review this patch to remove a redundant memory copy in the UL log stream classes.
> 
> http://cr.openjdk.java.net/~stefank/8153658/webrev.01
> https://bugs.openjdk.java.net/browse/JDK-8153658
> 
> LogStreamNoResourceMark copies the resource allocated string buffer into a new resource allocated string buffer before copying the data to UL.
> 
> Moreover, this also causes problem when implementing a log stream class using CHeap memory instead of Resource memory. Even though the first allocation is done from CHeap the second copy comes from Resource memory.

------------------------------------------------------------------------------ 
src/share/vm/logging/logStream.inline.hpp
  36     _current_line.write("\0", 1);

I think this write isn't needed. stringStream purportedly ensures the
internal buffer is NUL terminated, according to a comment in
stringStream::write.  And the code seems to do that.  Hm, except maybe
at construction time?  That seems like a bug.  And I think bad things
might happen if a stringStream is constructed with initial_size or
fixed_buffer_size of zero, which would also be a bug.

------------------------------------------------------------------------------



More information about the hotspot-dev mailing list