| 676 | } |
| 677 | |
| 678 | static bool mem_phase_enabled(void) { |
| 679 | int state = atomic_load_explicit(&g_mem_phase_enabled, memory_order_acquire); |
| 680 | if (state >= 0) { |
| 681 | return state == 1; |
| 682 | } |
| 683 | char buf[CBM_SZ_16]; |
| 684 | bool on = cbm_safe_getenv("CBM_MEM_PHASES", buf, sizeof(buf), NULL) != NULL && buf[0] == '1'; |
| 685 | if (on) { |
| 686 | cbm_mutex_init(&g_mem_phase_mutex); |
| 687 | } |
| 688 | atomic_store_explicit(&g_mem_phase_enabled, on ? 1 : 0, memory_order_release); |
| 689 | return on; |
| 690 | } |
| 691 | |
| 692 | void cbm_mem_phase_mark(const char *label) { |
| 693 | if (!mem_phase_enabled()) { |
no test coverage detected