< prev index next >
src/share/vm/runtime/vmThread.cpp
Print this page
*** 30,39 ****
--- 30,40 ----
#include "oops/oop.inline.hpp"
#include "oops/verifyOopClosure.hpp"
#include "runtime/interfaceSupport.hpp"
#include "runtime/mutexLocker.hpp"
#include "runtime/os.hpp"
+ #include "runtime/safepoint.hpp"
#include "runtime/thread.inline.hpp"
#include "runtime/vmThread.hpp"
#include "runtime/vm_operations.hpp"
#include "services/runtimeService.hpp"
#include "trace/tracing.hpp"
*** 350,367 ****
EventExecuteVMOperation event;
op->evaluate();
if (event.should_commit()) {
! bool is_concurrent = op->evaluate_concurrently();
event.set_operation(op->type());
! event.set_safepoint(op->evaluate_at_safepoint());
event.set_blocking(!is_concurrent);
// Only write caller thread information for non-concurrent vm operations.
// For concurrent vm operations, the thread id is set to 0 indicating thread is unknown.
// This is because the caller thread could have exited already.
event.set_caller(is_concurrent ? 0 : op->calling_thread()->osthread()->thread_id());
event.commit();
}
HOTSPOT_VMOPS_END(
(char *) op->name(), strlen(op->name()),
--- 351,370 ----
EventExecuteVMOperation event;
op->evaluate();
if (event.should_commit()) {
! const bool is_concurrent = op->evaluate_concurrently();
! const bool evaluate_at_safepoint = op->evaluate_at_safepoint();
event.set_operation(op->type());
! event.set_safepoint(evaluate_at_safepoint);
event.set_blocking(!is_concurrent);
// Only write caller thread information for non-concurrent vm operations.
// For concurrent vm operations, the thread id is set to 0 indicating thread is unknown.
// This is because the caller thread could have exited already.
event.set_caller(is_concurrent ? 0 : op->calling_thread()->osthread()->thread_id());
+ event.set_safepointId(evaluate_at_safepoint ? SafepointSynchronize::safepoint_counter() : 0);
event.commit();
}
HOTSPOT_VMOPS_END(
(char *) op->name(), strlen(op->name()),
< prev index next >