1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556(* Copyright (c) 2020-2025, Guillaume Munch-Maccagnoni & INRIA
SPDX-License-Identifier: LGPL-3.0-only WITH LGPL-3.0-linking-exception
*)#include"config.h"includeStdlib.Gc.Memprofletstop=Memprof_server.stop_1#ifMULTICORE=0letstart=Memprof_server.start_1#else(* For OCaml 5, we reimplement discarding by hand. *)typet=Token.tletdiscard=Token.setletrelativizetfx=ifnot(Token.is_sett)thenfxletrelativize_opttfx=ifToken.is_settthenNoneelse fxletstart~sampling_rate?callstack_sizetracker=lett=Token.create()inletrelative_tracker=let {alloc_minor;alloc_major;promote;dealloc_minor;dealloc_major }=trackerinletalloc_minorx=relativize_opttalloc_minorxinletalloc_major x=relativize_opttalloc_majorxinletpromote x=relativize_opttpromotexinletdealloc_minorx=relativizetdealloc_minorxinletdealloc_major x=relativizetdealloc_majorxin{alloc_minor;alloc_major ;promote;dealloc_minor ;dealloc_major }inignore(Memprof_server.start_1~sampling_rate?callstack_sizerelative_tracker);(* We pretend that the config is an actualmemprof config. In OCaml
5.3, this can only be passed to Gc.Memprof.discard. *)t#ifHAS_RESTART =1letis_sampling=Memprof_server.is_started_1#endif#endif