diff -r 091ed8f2e7d7 -r b2d1c3b0bd31 src/hotspot/share/runtime/vmOperations.cpp --- a/src/hotspot/share/runtime/vmOperations.cpp Thu Jan 24 12:45:19 2019 +0530 +++ b/src/hotspot/share/runtime/vmOperations.cpp Wed Jan 23 13:40:09 2019 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -333,8 +333,7 @@ if (_with_locked_synchronizers) { tcl = concurrent_locks.thread_concurrent_locks(jt); } - ThreadSnapshot* ts = snapshot_thread(jt, tcl); - _result->add_thread_snapshot(ts); + snapshot_thread(jt, tcl); } } else { // Snapshot threads in the given _threads array @@ -345,7 +344,7 @@ if (th() == NULL) { // skip if the thread doesn't exist // Add a dummy snapshot - _result->add_thread_snapshot(new ThreadSnapshot()); + _result->add_thread_snapshot(); continue; } @@ -362,24 +361,22 @@ jt->is_exiting() || jt->is_hidden_from_external_view()) { // add a NULL snapshot if skipped - _result->add_thread_snapshot(new ThreadSnapshot()); + _result->add_thread_snapshot(); continue; } ThreadConcurrentLocks* tcl = NULL; if (_with_locked_synchronizers) { tcl = concurrent_locks.thread_concurrent_locks(jt); } - ThreadSnapshot* ts = snapshot_thread(jt, tcl); - _result->add_thread_snapshot(ts); + snapshot_thread(jt, tcl); } } } -ThreadSnapshot* VM_ThreadDump::snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl) { - ThreadSnapshot* snapshot = new ThreadSnapshot(_result->t_list(), java_thread); +void VM_ThreadDump::snapshot_thread(JavaThread* java_thread, ThreadConcurrentLocks* tcl) { + ThreadSnapshot* snapshot = _result->add_thread_snapshot(java_thread); snapshot->dump_stack_at_safepoint(_max_depth, _with_locked_monitors); snapshot->set_concurrent_locks(tcl); - return snapshot; } volatile bool VM_Exit::_vm_exited = false;