310 ResolvedMethodTableDeleteCheck stdc;
311 ResolvedMethodTableDoDelete stdd;
312 {
313 TraceTime timer("Clean", TRACETIME_LOG(Debug, membername, table, perf));
314 while(bdt.do_task(jt, stdc, stdd)) {
315 bdt.pause(jt);
316 {
317 ThreadBlockInVM tbivm(jt);
318 }
319 bdt.cont(jt);
320 }
321 bdt.done(jt);
322 }
323 log_info(membername, table)("Cleaned %ld of %ld", stdc._count, stdc._item);
324 }
325 void ResolvedMethodTable::reset_dead_counter() {
326 _uncleaned_items_count = 0;
327 }
328
329 void ResolvedMethodTable::inc_dead_counter(size_t ndead) {
330 size_t total = Atomic::add(ndead, &_uncleaned_items_count);
331 log_trace(membername, table)(
332 "Uncleaned items:" SIZE_FORMAT " added: " SIZE_FORMAT " total:" SIZE_FORMAT,
333 _uncleaned_items_count, ndead, total);
334 }
335
336 // After the parallel walk this method must be called to trigger
337 // cleaning. Note it might trigger a resize instead.
338 void ResolvedMethodTable::finish_dead_counter() {
339 check_concurrent_work();
340 }
341
342 #if INCLUDE_JVMTI
343 class AdjustMethodEntries : public StackObj {
344 bool* _trace_name_printed;
345 public:
346 AdjustMethodEntries(bool* trace_name_printed) : _trace_name_printed(trace_name_printed) {};
347 bool operator()(WeakHandle<vm_resolved_method_table_data>* entry) {
348 oop mem_name = entry->peek();
349 if (mem_name == NULL) {
350 // Removed
|
310 ResolvedMethodTableDeleteCheck stdc;
311 ResolvedMethodTableDoDelete stdd;
312 {
313 TraceTime timer("Clean", TRACETIME_LOG(Debug, membername, table, perf));
314 while(bdt.do_task(jt, stdc, stdd)) {
315 bdt.pause(jt);
316 {
317 ThreadBlockInVM tbivm(jt);
318 }
319 bdt.cont(jt);
320 }
321 bdt.done(jt);
322 }
323 log_info(membername, table)("Cleaned %ld of %ld", stdc._count, stdc._item);
324 }
325 void ResolvedMethodTable::reset_dead_counter() {
326 _uncleaned_items_count = 0;
327 }
328
329 void ResolvedMethodTable::inc_dead_counter(size_t ndead) {
330 size_t total = Atomic::add(&_uncleaned_items_count, ndead);
331 log_trace(membername, table)(
332 "Uncleaned items:" SIZE_FORMAT " added: " SIZE_FORMAT " total:" SIZE_FORMAT,
333 _uncleaned_items_count, ndead, total);
334 }
335
336 // After the parallel walk this method must be called to trigger
337 // cleaning. Note it might trigger a resize instead.
338 void ResolvedMethodTable::finish_dead_counter() {
339 check_concurrent_work();
340 }
341
342 #if INCLUDE_JVMTI
343 class AdjustMethodEntries : public StackObj {
344 bool* _trace_name_printed;
345 public:
346 AdjustMethodEntries(bool* trace_name_printed) : _trace_name_printed(trace_name_printed) {};
347 bool operator()(WeakHandle<vm_resolved_method_table_data>* entry) {
348 oop mem_name = entry->peek();
349 if (mem_name == NULL) {
350 // Removed
|