diff options
author | Rickard Green <[email protected]> | 2011-02-25 12:26:47 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2011-02-25 12:26:47 +0100 |
commit | 36fedbaec633e6afbe35877a688ac1a95516cdd4 (patch) | |
tree | 958dc7954e6776e385b0c6dd6f19a23dcd06b0de /erts/emulator/beam/erl_process.h | |
parent | f36365ab30f9e2811e8d9e2fc342bb1f4eac45ed (diff) | |
parent | 96effb9c1115f7a168d4db625726c738240d4c9b (diff) | |
download | otp-36fedbaec633e6afbe35877a688ac1a95516cdd4.tar.gz otp-36fedbaec633e6afbe35877a688ac1a95516cdd4.tar.bz2 otp-36fedbaec633e6afbe35877a688ac1a95516cdd4.zip |
Merge branch 'rickard/temp_alloc_check/OTP-9028' into dev
* rickard/temp_alloc_check/OTP-9028:
Verify that temp allocated memory is released
Diffstat (limited to 'erts/emulator/beam/erl_process.h')
-rw-r--r-- | erts/emulator/beam/erl_process.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_process.h b/erts/emulator/beam/erl_process.h index 8479e56710..e871a9834a 100644 --- a/erts/emulator/beam/erl_process.h +++ b/erts/emulator/beam/erl_process.h @@ -28,6 +28,12 @@ #define ERTS_INCLUDE_SCHEDULER_INTERNALS #endif +/* #define ERTS_DO_VERIFY_UNUSED_TEMP_ALLOC */ + +#if !defined(ERTS_DO_VERIFY_UNUSED_TEMP_ALLOC) && defined(DEBUG) +# define ERTS_DO_VERIFY_UNUSED_TEMP_ALLOC +#endif + typedef struct process Process; #include "sys.h" @@ -421,6 +427,11 @@ struct ErtsSchedulerData_ { /* NOTE: These fields are modified under held mutexes by other threads */ erts_smp_atomic32_t chk_cpu_bind; /* Only used when common run queue */ #endif + +#ifdef ERTS_DO_VERIFY_UNUSED_TEMP_ALLOC + erts_alloc_verify_func_t verify_unused_temp_alloc; + Allctr_t *verify_unused_temp_alloc_data; +#endif }; typedef union { @@ -1145,6 +1156,20 @@ Uint erts_debug_nbalance(void); # define ERTS_PROC_GET_SCHDATA(PROC) (erts_scheduler_data) #endif +#ifdef ERTS_DO_VERIFY_UNUSED_TEMP_ALLOC +# define ERTS_VERIFY_UNUSED_TEMP_ALLOC(P) \ +do { \ + ErtsSchedulerData *esdp__ = ((P) \ + ? ERTS_PROC_GET_SCHDATA((Process *) (P)) \ + : erts_get_scheduler_data()); \ + if (esdp__) \ + esdp__->verify_unused_temp_alloc( \ + esdp__->verify_unused_temp_alloc_data); \ +} while (0) +#else +# define ERTS_VERIFY_UNUSED_TEMP_ALLOC(ESDP) +#endif + #if defined(ERTS_SMP) || defined(USE_THREADS) ErtsSchedulerData *erts_get_scheduler_data(void); #else |