< prev index next >

src/share/vm/classfile/classFileParser.cpp

Print this page
rev 8856 : 8210094: Better loading of classloader classes
Reviewed-by: acorn, hseigel, ahgross, rhalade
rev 8910 : full patch for jfr

*** 1,7 **** /* ! * Copyright (c) 1997, 2018, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 1997, 2019, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 59,68 **** --- 59,69 ---- #include "runtime/reflection.hpp" #include "runtime/signature.hpp" #include "runtime/timer.hpp" #include "services/classLoadingService.hpp" #include "services/threadService.hpp" + #include "trace/traceMacros.hpp" #include "utilities/array.hpp" #include "utilities/globalDefinitions.hpp" #include "utilities/ostream.hpp" // We generally try to create the oops directly when parsing, rather than
*** 3883,3892 **** --- 3884,3894 ---- verify_legal_class_modifiers(flags, CHECK_(nullHandle)); access_flags.set_flags(flags); // This class and superclass u2 this_class_index = cfs->get_u2_fast(); + _this_class_index = this_class_index; //used by jfr check_property( valid_cp_range(this_class_index, cp_size) && cp->tag_at(this_class_index).is_unresolved_klass(), "Invalid this class index %u in constant pool in class file %s", this_class_index, CHECK_(nullHandle));
*** 4213,4222 **** --- 4215,4225 ---- // Update the loader_data graph. record_defined_class_dependencies(this_klass, CHECK_NULL); ClassLoadingService::notify_class_loaded(InstanceKlass::cast(this_klass()), false /* not shared class */); + TRACE_INIT_ID(InstanceKlass::cast(this_klass())); if (TraceClassLoading) { ResourceMark rm; // print in a single call to reduce interleaving of output if (cfs->source() != NULL) {
*** 5298,5302 **** --- 5301,5321 ---- return NULL; } } return NULL; } + + const ClassFileStream* ClassFileParser::clone_stream() const { + assert(_stream != NULL, "invariant"); + return _stream->clone(); + } + + void ClassFileParser::set_klass_to_deallocate(InstanceKlass* klass) { + + #ifdef ASSERT + if (klass != NULL) { + assert(NULL == _klass, "leaking?"); + } + #endif + + _klass = klass; + }
< prev index next >