# HG changeset patch # User ccheung # Date 1449107300 28800 # Node ID f46ffa934a46f5bbde74c41881a8aef5c7077474 # Parent dce765c2ff7dc69d5b562af3ffa07c7b6656fe0e 8143963: improve ClassLoader::trace_class_path to accept an additional outputStream* arg Summary: for fixing a truncation problem on the output from -XX:+TraceClassPaths Reviewed-by: coleenp, jiangli, cjplummer, minqi diff -r dce765c2ff7d -r f46ffa934a46 src/share/vm/classfile/classLoader.cpp --- a/src/share/vm/classfile/classLoader.cpp Thu Mar 27 22:36:08 2014 +0100 +++ b/src/share/vm/classfile/classLoader.cpp Wed Dec 02 17:48:20 2015 -0800 @@ -414,30 +414,30 @@ } #endif -void ClassLoader::trace_class_path(const char* msg, const char* name) { +void ClassLoader::trace_class_path(outputStream* out, const char* msg, const char* name) { if (!TraceClassPaths) { return; } if (msg) { - tty->print("%s", msg); + out->print("%s", msg); } if (name) { if (strlen(name) < 256) { - tty->print("%s", name); + out->print("%s", name); } else { // For very long paths, we need to print each character separately, // as print_cr() has a length limit while (name[0] != '\0') { - tty->print("%c", name[0]); + out->print("%c", name[0]); name++; } } } if (msg && msg[0] == '[') { - tty->print_cr("]"); + out->print_cr("]"); } else { - tty->cr(); + out->cr(); } } @@ -583,7 +583,7 @@ // Don't print sys_class_path - this is the bootcp of this current VM process, not necessarily // the same as the bootcp of the shared archive. } else { - trace_class_path("[Bootstrap loader class path=", sys_class_path); + trace_class_path(tty, "[Bootstrap loader class path=", sys_class_path); } #if INCLUDE_CDS if (DumpSharedSpaces) { diff -r dce765c2ff7d -r f46ffa934a46 src/share/vm/classfile/classLoader.hpp --- a/src/share/vm/classfile/classLoader.hpp Thu Mar 27 22:36:08 2014 +0100 +++ b/src/share/vm/classfile/classLoader.hpp Wed Dec 02 17:48:20 2015 -0800 @@ -346,7 +346,7 @@ static void exit_with_path_failure(const char* error, const char* message); #endif - static void trace_class_path(const char* msg, const char* name = NULL); + static void trace_class_path(outputStream* out, const char* msg, const char* name = NULL); // VM monitoring and management support static jlong classloader_time_ms(); diff -r dce765c2ff7d -r f46ffa934a46 src/share/vm/classfile/sharedPathsMiscInfo.cpp --- a/src/share/vm/classfile/sharedPathsMiscInfo.cpp Thu Mar 27 22:36:08 2014 +0100 +++ b/src/share/vm/classfile/sharedPathsMiscInfo.cpp Wed Dec 02 17:48:20 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -67,7 +67,7 @@ } bool SharedPathsMiscInfo::fail(const char* msg, const char* name) { - ClassLoader::trace_class_path(msg, name); + ClassLoader::trace_class_path(tty, msg, name); MetaspaceShared::set_archive_loading_failed(); return false; } diff -r dce765c2ff7d -r f46ffa934a46 src/share/vm/classfile/sharedPathsMiscInfo.hpp --- a/src/share/vm/classfile/sharedPathsMiscInfo.hpp Thu Mar 27 22:36:08 2014 +0100 +++ b/src/share/vm/classfile/sharedPathsMiscInfo.hpp Wed Dec 02 17:48:20 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -64,7 +64,7 @@ bool read(void* ptr, size_t size); static void trace_class_path(const char* msg, const char* name = NULL) { - ClassLoader::trace_class_path(msg, name); + ClassLoader::trace_class_path(tty, msg, name); } protected: static bool fail(const char* msg, const char* name = NULL); diff -r dce765c2ff7d -r f46ffa934a46 src/share/vm/runtime/arguments.cpp --- a/src/share/vm/runtime/arguments.cpp Thu Mar 27 22:36:08 2014 +0100 +++ b/src/share/vm/runtime/arguments.cpp Wed Dec 02 17:48:20 2015 -0800 @@ -3414,7 +3414,7 @@ } if (!PrintSharedArchiveAndExit) { - ClassLoader::trace_class_path("[classpath: ", _java_class_path->value()); + ClassLoader::trace_class_path(tty, "[classpath: ", _java_class_path->value()); } }