@@ -214,22 +214,50 @@ public static SamplerStackWalkVisitor visitor() {
214214 }
215215
216216 @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
217- boolean isProfilingEnabled () {
218- return enabled ;
217+ public static void preventThreadsFromEnteringSigProfHandler () {
218+ if (ImageSingletons .contains (SubstrateSigprofHandler .class )) {
219+ singleton ().preventThreadsFromEnteringSigProfHandler0 ();
220+ }
221+ }
222+
223+ @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
224+ public static void allowThreadsInSigProfHandler () {
225+ if (ImageSingletons .contains (SubstrateSigprofHandler .class )) {
226+ singleton ().allowThreadsInSigProfHandler0 ();
227+ }
219228 }
220229
221230 @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
222- public void preventThreadsFromEnteringSigProfHandler () {
231+ public static void waitUntilAllThreadsExitedSignalHandler () {
232+ if (ImageSingletons .contains (SubstrateSigprofHandler .class )) {
233+ singleton ().waitUntilAllThreadsExitedSignalHandler0 ();
234+ }
235+ }
236+
237+ @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
238+ private void preventThreadsFromEnteringSigProfHandler0 () {
223239 int value = isSignalHandlerDisabledTemporarily .incrementAndGet ();
224240 assert value > 0 ;
225241 }
226242
227243 @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
228- public void allowThreadsInSigProfHandler () {
244+ private void allowThreadsInSigProfHandler0 () {
229245 int value = isSignalHandlerDisabledTemporarily .decrementAndGet ();
230246 assert value >= 0 ;
231247 }
232248
249+ @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
250+ private void waitUntilAllThreadsExitedSignalHandler0 () {
251+ while (threadsInSignalHandler .get () > 0 ) {
252+ VMThreads .singleton ().yield ();
253+ }
254+ }
255+
256+ @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
257+ boolean isProfilingEnabled () {
258+ return enabled ;
259+ }
260+
233261 @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
234262 public SamplerBufferStack availableBuffers () {
235263 return availableBuffers ;
@@ -240,13 +268,6 @@ public SamplerBufferStack fullBuffers() {
240268 return fullBuffers ;
241269 }
242270
243- @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
244- public void waitUntilAllThreadsExitedSignalHandler () {
245- while (threadsInSignalHandler .get () > 0 ) {
246- VMThreads .singleton ().yield ();
247- }
248- }
249-
250271 @ Uninterruptible (reason = "Called from uninterruptible code." , mayBeInlined = true )
251272 SubstrateThreadMXBean substrateThreadMXBean () {
252273 return threadMXBean ;
0 commit comments