Skip to content

Commit 7282d0d

Browse files
committedSep 2, 2020
8252589: Code duplication in ParallelSPCleanupTask
Reviewed-by: shade, dholmes
1 parent 02049ee commit 7282d0d

File tree

1 file changed

+23
-32
lines changed

1 file changed

+23
-32
lines changed
 

‎src/hotspot/share/runtime/safepoint.cpp

+23-32
Original file line numberDiff line numberDiff line change
@@ -501,72 +501,63 @@ class ParallelSPCleanupTask : public AbstractGangTask {
501501
private:
502502
SubTasksDone _subtasks;
503503
uint _num_workers;
504+
505+
class Tracer {
506+
private:
507+
const char* _name;
508+
EventSafepointCleanupTask _event;
509+
TraceTime _timer;
510+
511+
public:
512+
Tracer(const char* name) :
513+
_name(name),
514+
_event(),
515+
_timer(name, TRACETIME_LOG(Info, safepoint, cleanup)) {}
516+
~Tracer() {
517+
post_safepoint_cleanup_task_event(_event, SafepointSynchronize::safepoint_id(), _name);
518+
}
519+
};
520+
504521
public:
505522
ParallelSPCleanupTask(uint num_workers) :
506523
AbstractGangTask("Parallel Safepoint Cleanup"),
507524
_subtasks(SafepointSynchronize::SAFEPOINT_CLEANUP_NUM_TASKS),
508525
_num_workers(num_workers) {}
509526

510527
void work(uint worker_id) {
511-
uint64_t safepoint_id = SafepointSynchronize::safepoint_id();
512-
513528
if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_DEFLATE_MONITORS)) {
514-
const char* name = "deflating idle monitors";
515-
EventSafepointCleanupTask event;
516-
TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
529+
Tracer t("deflating idle monitors");
517530
ObjectSynchronizer::do_safepoint_work();
518-
519-
post_safepoint_cleanup_task_event(event, safepoint_id, name);
520531
}
521532

522533
if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_UPDATE_INLINE_CACHES)) {
523-
const char* name = "updating inline caches";
524-
EventSafepointCleanupTask event;
525-
TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
534+
Tracer t("updating inline caches");
526535
InlineCacheBuffer::update_inline_caches();
527-
528-
post_safepoint_cleanup_task_event(event, safepoint_id, name);
529536
}
530537

531538
if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_COMPILATION_POLICY)) {
532-
const char* name = "compilation policy safepoint handler";
533-
EventSafepointCleanupTask event;
534-
TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
539+
Tracer t("compilation policy safepoint handler");
535540
CompilationPolicy::policy()->do_safepoint_work();
536-
537-
post_safepoint_cleanup_task_event(event, safepoint_id, name);
538541
}
539542

540543
if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_SYMBOL_TABLE_REHASH)) {
541544
if (SymbolTable::needs_rehashing()) {
542-
const char* name = "rehashing symbol table";
543-
EventSafepointCleanupTask event;
544-
TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
545+
Tracer t("rehashing symbol table");
545546
SymbolTable::rehash_table();
546-
547-
post_safepoint_cleanup_task_event(event, safepoint_id, name);
548547
}
549548
}
550549

551550
if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_STRING_TABLE_REHASH)) {
552551
if (StringTable::needs_rehashing()) {
553-
const char* name = "rehashing string table";
554-
EventSafepointCleanupTask event;
555-
TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
552+
Tracer t("rehashing string table");
556553
StringTable::rehash_table();
557-
558-
post_safepoint_cleanup_task_event(event, safepoint_id, name);
559554
}
560555
}
561556

562557
if (_subtasks.try_claim_task(SafepointSynchronize::SAFEPOINT_CLEANUP_SYSTEM_DICTIONARY_RESIZE)) {
563558
if (Dictionary::does_any_dictionary_needs_resizing()) {
564-
const char* name = "resizing system dictionaries";
565-
EventSafepointCleanupTask event;
566-
TraceTime timer(name, TRACETIME_LOG(Info, safepoint, cleanup));
559+
Tracer t("resizing system dictionaries");
567560
ClassLoaderDataGraph::resize_dictionaries();
568-
569-
post_safepoint_cleanup_task_event(event, safepoint_id, name);
570561
}
571562
}
572563

0 commit comments

Comments
 (0)
Please sign in to comment.