diff options
author | Patrik Nyblom <[email protected]> | 2011-01-13 15:07:03 +0100 |
---|---|---|
committer | Patrik Nyblom <[email protected]> | 2011-01-13 15:13:46 +0100 |
commit | 39c74e5e45518b6d0f4fb5876d33e0046ba8e14b (patch) | |
tree | 2376a7ed39b59514783432c31c27e57f0e20df1b | |
parent | c6abed0fa0cbda3247bfd935bdc325f8983320cc (diff) | |
download | otp-39c74e5e45518b6d0f4fb5876d33e0046ba8e14b.tar.gz otp-39c74e5e45518b6d0f4fb5876d33e0046ba8e14b.tar.bz2 otp-39c74e5e45518b6d0f4fb5876d33e0046ba8e14b.zip |
Fix assymetric (Un)UseTmpHeap in erl_process.c
Also added ASSERTion in beam_emu.c that the tmp-heap-counter in 0.
-rw-r--r-- | erts/emulator/beam/beam_emu.c | 5 | ||||
-rw-r--r-- | erts/emulator/beam/erl_process.c | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c index 8a0e12dd4f..e831df932e 100644 --- a/erts/emulator/beam/beam_emu.c +++ b/erts/emulator/beam/beam_emu.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1996-2010. All Rights Reserved. + * Copyright Ericsson AB 1996-2011. All Rights Reserved. * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in @@ -1178,6 +1178,9 @@ void process_main(void) do_schedule1: PROCESS_MAIN_CHK_LOCKS(c_p); ERTS_SMP_UNREQ_PROC_MAIN_LOCK(c_p); +#if HALFWORD_HEAP + ASSERT(erts_get_scheduler_data()->num_tmp_heap_used == 0); +#endif c_p = schedule(c_p, reds_used); #ifdef DEBUG pid = c_p->id; diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index ddfc27a93f..510fe27ffe 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -1,7 +1,7 @@ /* * %CopyrightBegin% * - * Copyright Ericsson AB 1996-2010. All Rights Reserved. + * Copyright Ericsson AB 1996-2011. All Rights Reserved. * * The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in @@ -7068,11 +7068,11 @@ static void doit_exit_monitor(ErtsMonitor *mon, void *vpcontext) DeclareTmpHeapNoproc(lhp,3); ErtsProcLocks rp_locks = (ERTS_PROC_LOCK_LINK | ERTS_PROC_LOCKS_MSG_SEND); - UseTmpHeapNoproc(3); rp = erts_pid2proc(NULL, 0, mon->pid, rp_locks); if (rp == NULL) { goto done; } + UseTmpHeapNoproc(3); rmon = erts_remove_monitor(&(rp->monitors),mon->ref); if (rmon) { erts_destroy_monitor(rmon); |