MCPcopy Create free account
hub / github.com/LSPosed/LSPlant / JavaDebuggableGuard

Method JavaDebuggableGuard

lsplant/src/main/jni/lsplant.cc:310–330  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

308
309struct JavaDebuggableGuard {
310 JavaDebuggableGuard() {
311 while (true) {
312 size_t expected = 0;
313 if (count.compare_exchange_strong(expected, 1, std::memory_order_acq_rel,
314 std::memory_order_acquire)) {
315 Runtime::Current()->SetJavaDebuggable(
316 Runtime::RuntimeDebugState::kJavaDebuggableAtInit);
317 count.fetch_add(1, std::memory_order_release);
318 count.notify_all();
319 break;
320 }
321 if (expected == 1) {
322 count.wait(expected, std::memory_order_acquire);
323 continue;
324 }
325 if (count.compare_exchange_strong(expected, expected + 1, std::memory_order_acq_rel,
326 std::memory_order_relaxed)) {
327 break;
328 }
329 }
330 }
331
332 ~JavaDebuggableGuard() {
333 while (true) {

Callers

nothing calls this directly

Calls 1

SetJavaDebuggableMethod · 0.80

Tested by

no test coverage detected