aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/bif.h
diff options
context:
space:
mode:
authorBjörn-Egil Dahlberg <[email protected]>2011-11-07 15:57:09 +0100
committerBjörn-Egil Dahlberg <[email protected]>2011-11-07 16:07:01 +0100
commit7566b2afc2a3bd509ea0bf744e87770643ce3477 (patch)
tree2791acde6de6d4ea91cb9574665e146dc314786f /erts/emulator/beam/bif.h
parent23e1f63738cef1a82e2dc18fe395ac208fdee5fc (diff)
downloadotp-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.h11
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); \