< prev index next >

src/hotspot/share/runtime/thread.cpp

Print this page
@@ -138,10 +138,21 @@
      // If the main thread creates other threads before the barrier set that is an error.
      assert(Thread::current_or_null() == nullptr, "creating thread before barrier set");
    }
  
    MACOS_AARCH64_ONLY(DEBUG_ONLY(_wx_init = false));
+ 
+   _profile_vm_locks = false;
+   _profile_vm_calls = false;
+   _profile_vm_ops   = false;
+   _profile_rt_calls = false;
+   _profile_upcalls  = false;
+ 
+   _all_bc_counter_value = 0;
+   _clinit_bc_counter_value = 0;
+ 
+   _current_rt_call_timer = nullptr;
  }
  
  #ifdef ASSERT
  address Thread::stack_base() const {
    // Note: can't report Thread::name() here as that can require a ResourceMark which we

@@ -608,5 +619,17 @@
    // Conceptually we need a #loadstore|#storestore "release" MEMBAR before
    // the ST of 0 into the lock-word which releases the lock, so fence
    // more than covers this on all platforms.
    *adr = 0;
  }
+ 
+ const char* ProfileVMCallContext::name(PerfTraceTime* t) {
+   return t->name();
+ }
+ 
+ int ProfileVMCallContext::_perf_nested_runtime_calls_count = 0;
+ 
+ void ProfileVMCallContext::notify_nested_rt_call(PerfTraceTime* outer_timer, PerfTraceTime* inner_timer) {
+   log_debug(init)("Nested runtime call: inner=%s outer=%s", inner_timer->name(), outer_timer->name());
+   Atomic::inc(&ProfileVMCallContext::_perf_nested_runtime_calls_count);
+ }
+ 
< prev index next >