1 /* |
1 /* |
2 * Copyright (c) 2017, 2018, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
194 const Symbol* const sym = k->name(); |
194 const Symbol* const sym = k->name(); |
195 assert(sym != NULL, "invariant"); |
195 assert(sym != NULL, "invariant"); |
196 return (uintptr_t)const_cast<Symbol*>(sym)->identity_hash(); |
196 return (uintptr_t)const_cast<Symbol*>(sym)->identity_hash(); |
197 } |
197 } |
198 |
198 |
199 JfrArtifactSet::JfrArtifactSet(bool class_unload) : _symbol_id(new JfrSymbolId()), |
199 JfrArtifactSet::JfrArtifactSet(bool current_epoch) : _symbol_id(new JfrSymbolId()), |
200 _klass_list(NULL), |
200 _klass_list(NULL), |
201 _class_unload(class_unload) { |
201 _total_count(0), |
202 initialize(class_unload); |
202 _current_epoch(current_epoch) { |
|
203 initialize(current_epoch); |
203 assert(_klass_list != NULL, "invariant"); |
204 assert(_klass_list != NULL, "invariant"); |
204 } |
205 } |
205 |
206 |
206 static const size_t initial_class_list_size = 200; |
207 static const size_t initial_class_list_size = 200; |
207 void JfrArtifactSet::initialize(bool class_unload) { |
208 void JfrArtifactSet::initialize(bool current_epoch) { |
208 assert(_symbol_id != NULL, "invariant"); |
209 assert(_symbol_id != NULL, "invariant"); |
209 _symbol_id->initialize(); |
210 _symbol_id->initialize(); |
210 assert(!_symbol_id->has_entries(), "invariant"); |
211 assert(!_symbol_id->has_entries(), "invariant"); |
211 _symbol_id->mark(BOOTSTRAP_LOADER_NAME, 0); // pre-load "bootstrap" |
212 _symbol_id->mark(BOOTSTRAP_LOADER_NAME, 0); // pre-load "bootstrap" |
212 _class_unload = class_unload; |
213 _total_count = 0; |
|
214 _current_epoch = current_epoch; |
213 // resource allocation |
215 // resource allocation |
214 _klass_list = new GrowableArray<const Klass*>(initial_class_list_size, false, mtTracing); |
216 _klass_list = new GrowableArray<const Klass*>(initial_class_list_size, false, mtTracing); |
215 } |
217 } |
216 |
218 |
217 JfrArtifactSet::~JfrArtifactSet() { |
219 JfrArtifactSet::~JfrArtifactSet() { |
267 assert(k != NULL, "invariant"); |
269 assert(k != NULL, "invariant"); |
268 assert(_klass_list != NULL, "invariant"); |
270 assert(_klass_list != NULL, "invariant"); |
269 assert(_klass_list->find(k) == -1, "invariant"); |
271 assert(_klass_list->find(k) == -1, "invariant"); |
270 _klass_list->append(k); |
272 _klass_list->append(k); |
271 } |
273 } |
|
274 |
|
275 size_t JfrArtifactSet::total_count() const { |
|
276 return _total_count; |
|
277 } |
|
278 |