< prev index next >

src/hotspot/share/jfr/recorder/service/jfrRecorderService.cpp

Print this page
rev 56464 : 8231707: Improve Mutex inlining
Contributed-by: robbin.ehn@oracle.com, claes.redestad@oracle.com


  30 #include "jfr/recorder/jfrRecorder.hpp"
  31 #include "jfr/recorder/checkpoint/jfrCheckpointManager.hpp"
  32 #include "jfr/recorder/checkpoint/jfrMetadataEvent.hpp"
  33 #include "jfr/recorder/repository/jfrChunkRotation.hpp"
  34 #include "jfr/recorder/repository/jfrChunkWriter.hpp"
  35 #include "jfr/recorder/repository/jfrRepository.hpp"
  36 #include "jfr/recorder/service/jfrPostBox.hpp"
  37 #include "jfr/recorder/service/jfrRecorderService.hpp"
  38 #include "jfr/recorder/stacktrace/jfrStackTraceRepository.hpp"
  39 #include "jfr/recorder/storage/jfrStorage.hpp"
  40 #include "jfr/recorder/storage/jfrStorageControl.hpp"
  41 #include "jfr/recorder/stringpool/jfrStringPool.hpp"
  42 #include "jfr/utilities/jfrAllocation.hpp"
  43 #include "jfr/utilities/jfrTime.hpp"
  44 #include "jfr/writers/jfrJavaEventWriter.hpp"
  45 #include "jfr/utilities/jfrTypes.hpp"
  46 #include "logging/log.hpp"
  47 #include "memory/resourceArea.hpp"
  48 #include "runtime/atomic.hpp"
  49 #include "runtime/handles.inline.hpp"
  50 #include "runtime/mutexLocker.hpp"
  51 #include "runtime/orderAccess.hpp"
  52 #include "runtime/os.hpp"
  53 #include "runtime/safepoint.hpp"
  54 #include "runtime/thread.inline.hpp"
  55 #include "runtime/vmOperations.hpp"
  56 #include "runtime/vmThread.hpp"
  57 
  58 // set data iff *dest == NULL
  59 static bool try_set(void* const data, void** dest, bool clear) {
  60   assert(data != NULL, "invariant");
  61   const void* const current = OrderAccess::load_acquire(dest);
  62   if (current != NULL) {
  63     if (current != data) {
  64       // already set
  65       return false;
  66     }
  67     assert(current == data, "invariant");
  68     if (!clear) {
  69       // recursion disallowed
  70       return false;




  30 #include "jfr/recorder/jfrRecorder.hpp"
  31 #include "jfr/recorder/checkpoint/jfrCheckpointManager.hpp"
  32 #include "jfr/recorder/checkpoint/jfrMetadataEvent.hpp"
  33 #include "jfr/recorder/repository/jfrChunkRotation.hpp"
  34 #include "jfr/recorder/repository/jfrChunkWriter.hpp"
  35 #include "jfr/recorder/repository/jfrRepository.hpp"
  36 #include "jfr/recorder/service/jfrPostBox.hpp"
  37 #include "jfr/recorder/service/jfrRecorderService.hpp"
  38 #include "jfr/recorder/stacktrace/jfrStackTraceRepository.hpp"
  39 #include "jfr/recorder/storage/jfrStorage.hpp"
  40 #include "jfr/recorder/storage/jfrStorageControl.hpp"
  41 #include "jfr/recorder/stringpool/jfrStringPool.hpp"
  42 #include "jfr/utilities/jfrAllocation.hpp"
  43 #include "jfr/utilities/jfrTime.hpp"
  44 #include "jfr/writers/jfrJavaEventWriter.hpp"
  45 #include "jfr/utilities/jfrTypes.hpp"
  46 #include "logging/log.hpp"
  47 #include "memory/resourceArea.hpp"
  48 #include "runtime/atomic.hpp"
  49 #include "runtime/handles.inline.hpp"
  50 #include "runtime/mutexLocker.inline.hpp"
  51 #include "runtime/orderAccess.hpp"
  52 #include "runtime/os.hpp"
  53 #include "runtime/safepoint.hpp"
  54 #include "runtime/thread.inline.hpp"
  55 #include "runtime/vmOperations.hpp"
  56 #include "runtime/vmThread.hpp"
  57 
  58 // set data iff *dest == NULL
  59 static bool try_set(void* const data, void** dest, bool clear) {
  60   assert(data != NULL, "invariant");
  61   const void* const current = OrderAccess::load_acquire(dest);
  62   if (current != NULL) {
  63     if (current != data) {
  64       // already set
  65       return false;
  66     }
  67     assert(current == data, "invariant");
  68     if (!clear) {
  69       // recursion disallowed
  70       return false;


< prev index next >