aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/bif.c
diff options
context:
space:
mode:
authorMicael Karlberg <[email protected]>2011-03-17 12:28:39 +0100
committerMicael Karlberg <[email protected]>2011-03-17 12:28:39 +0100
commitb5aae77205c8081b79aa9ce1f1141f21f6e1fc2c (patch)
treed1bcdaaf38253733570660bf63183ca65bc454a9 /erts/emulator/beam/bif.c
parenta5d14f14e04ca7ca5fd34a7811cefbccdd024ce4 (diff)
parentf861b4fdb3fd39e35f2951c53a73b30a98c7f973 (diff)
downloadotp-b5aae77205c8081b79aa9ce1f1141f21f6e1fc2c.tar.gz
otp-b5aae77205c8081b79aa9ce1f1141f21f6e1fc2c.tar.bz2
otp-b5aae77205c8081b79aa9ce1f1141f21f6e1fc2c.zip
Merge branch 'dev' into bmk/inets/httpd/make_mod_esi_deliver_accept_binary_data/OTP-9123
Diffstat (limited to 'erts/emulator/beam/bif.c')
-rw-r--r--erts/emulator/beam/bif.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c
index bb237e378a..f01580eb2b 100644
--- a/erts/emulator/beam/bif.c
+++ b/erts/emulator/beam/bif.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
@@ -1091,10 +1091,20 @@ BIF_RETTYPE unlink_1(BIF_ALIST_1)
BIF_RETTYPE hibernate_3(BIF_ALIST_3)
{
/*
- * hibernate/3 is implemented as an instruction; therefore
- * this function will never be called.
+ * hibernate/3 is usually translated to an instruction; therefore
+ * this function is only called from HiPE or when the call could not
+ * be translated.
*/
- BIF_ERROR(BIF_P, BADARG);
+ Eterm reg[3];
+
+ if (erts_hibernate(BIF_P, BIF_ARG_1, BIF_ARG_2, BIF_ARG_3, reg)) {
+ /*
+ * If hibernate succeeded, TRAP. The process will be suspended
+ * if status is P_WAITING or continue (if any message was in the queue).
+ */
+ BIF_TRAP_CODE_PTR_(BIF_P, BIF_P->i);
+ }
+ return THE_NON_VALUE;
}
/**********************************************************************/