| 705 | } |
| 706 | |
| 707 | static bool mem_phase_enabled(void) { |
| 708 | int state = atomic_load_explicit(&g_mem_phase_enabled, memory_order_acquire); |
| 709 | if (state >= 0) { |
| 710 | return state == 1; |
| 711 | } |
| 712 | char buf[CBM_SZ_16]; |
| 713 | bool on = cbm_safe_getenv("CBM_MEM_PHASES", buf, sizeof(buf), NULL) != NULL && buf[0] == '1'; |
| 714 | if (on) { |
| 715 | cbm_mutex_init(&g_mem_phase_mutex); |
| 716 | } |
| 717 | atomic_store_explicit(&g_mem_phase_enabled, on ? 1 : 0, memory_order_release); |
| 718 | return on; |
| 719 | } |
| 720 | |
| 721 | void cbm_mem_phase_mark(const char *label) { |
| 722 | if (!mem_phase_enabled()) { |
no test coverage detected