diff options
author | Björn-Egil Dahlberg <[email protected]> | 2011-11-07 15:57:09 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2011-11-07 16:07:01 +0100 |
commit | 7566b2afc2a3bd509ea0bf744e87770643ce3477 (patch) | |
tree | 2791acde6de6d4ea91cb9574665e146dc314786f /erts/emulator/beam/bif.h | |
parent | 23e1f63738cef1a82e2dc18fe395ac208fdee5fc (diff) | |
download | otp-7566b2afc2a3bd509ea0bf744e87770643ce3477.tar.gz otp-7566b2afc2a3bd509ea0bf744e87770643ce3477.tar.bz2 otp-7566b2afc2a3bd509ea0bf744e87770643ce3477.zip |
erts: Remove cp on exiting and trapping processes
Diffstat (limited to 'erts/emulator/beam/bif.h')
-rw-r--r-- | erts/emulator/beam/bif.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/erts/emulator/beam/bif.h b/erts/emulator/beam/bif.h index 8faa09feb8..66f152a6ea 100644 --- a/erts/emulator/beam/bif.h +++ b/erts/emulator/beam/bif.h @@ -160,6 +160,17 @@ do { \ (Ret) = THE_NON_VALUE; \ } while (0) +#define ERTS_BIF_PREP_TRAP3_NO_RET(Trap, Proc, A0, A1, A2)\ +do { \ + (Proc)->arity = 3; \ + (Proc)->def_arg_reg[0] = (Eterm) (A0); \ + (Proc)->def_arg_reg[1] = (Eterm) (A1); \ + (Proc)->def_arg_reg[2] = (Eterm) (A2); \ + *((UWord *) (UWord) ((Proc)->def_arg_reg + 3)) = (UWord) ((Trap)->address); \ + (Proc)->freason = TRAP; \ +} while (0) + + #define BIF_TRAP0(p, Trap_) do { \ (p)->arity = 0; \ *((UWord *) (UWord) ((p)->def_arg_reg + 3)) = (UWord) ((Trap_)->address); \ |