--- old/src/share/vm/classfile/systemDictionary.cpp 2013-01-08 05:02:13.292634168 -0500 +++ new/src/share/vm/classfile/systemDictionary.cpp 2013-01-08 05:02:11.308525124 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2013, 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 @@ -135,13 +135,18 @@ bool SystemDictionary::is_parallelCapable(Handle class_loader) { if (UnsyncloadClass || class_loader.is_null()) return true; if (AlwaysLockClassLoader) return false; - return java_lang_ClassLoader::parallelCapable(class_loader()); + // fullyConcurrent subsumes the parallelCapable test + return java_lang_ClassLoader::fullyConcurrent(class_loader()) || + java_lang_ClassLoader::parallelCapable(class_loader()); } // ---------------------------------------------------------------------------- // ParallelDefineClass flag does not apply to bootclass loader bool SystemDictionary::is_parallelDefine(Handle class_loader) { if (class_loader.is_null()) return false; - if (AllowParallelDefineClass && java_lang_ClassLoader::parallelCapable(class_loader())) { + if (java_lang_ClassLoader::fullyConcurrent(class_loader()) || + AllowParallelDefineClass && java_lang_ClassLoader::parallelCapable(class_loader())) { + if (TraceClassLoading) + tty->print_cr("Parallel define permitted for loader: " PTR_FORMAT, class_loader()); return true; } return false;