diff options
author | Micael Karlberg <[email protected]> | 2011-03-25 17:51:06 +0100 |
---|---|---|
committer | Micael Karlberg <[email protected]> | 2011-03-25 17:51:06 +0100 |
commit | 101a2bdd5c48f38803c274603844c69296a3b935 (patch) | |
tree | fd9e949322565dde54ae26958b798fed4c3bc837 /erts/emulator/beam/beam_emu.c | |
parent | b56002c163ff5f811da902129dd4b2f37edc226d (diff) | |
parent | f0e2f0b91ac4d45a64ddac511e0eba9b6ce01e92 (diff) | |
download | otp-101a2bdd5c48f38803c274603844c69296a3b935.tar.gz otp-101a2bdd5c48f38803c274603844c69296a3b935.tar.bz2 otp-101a2bdd5c48f38803c274603844c69296a3b935.zip |
Merge branch 'dev' into bmk/snmp/support_ipv6_transport_address
Diffstat (limited to 'erts/emulator/beam/beam_emu.c')
-rw-r--r-- | erts/emulator/beam/beam_emu.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c index e96014c665..7b2aac0908 100644 --- a/erts/emulator/beam/beam_emu.c +++ b/erts/emulator/beam/beam_emu.c @@ -1023,8 +1023,6 @@ static BeamInstr* call_error_handler(Process* p, BeamInstr* ip, static BeamInstr* fixed_apply(Process* p, Eterm* reg, Uint arity) NOINLINE; static BeamInstr* apply(Process* p, Eterm module, Eterm function, Eterm args, Eterm* reg) NOINLINE; -static int hibernate(Process* c_p, Eterm module, Eterm function, - Eterm args, Eterm* reg) NOINLINE; static BeamInstr* call_fun(Process* p, int arity, Eterm* reg, Eterm args) NOINLINE; static BeamInstr* apply_fun(Process* p, Eterm fun, @@ -3421,6 +3419,9 @@ void process_main(void) r(0) = c_p->def_arg_reg[0]; x(1) = c_p->def_arg_reg[1]; x(2) = c_p->def_arg_reg[2]; + if (c_p->status == P_WAITING) { + goto do_schedule; + } Dispatch(); } reg[0] = r(0); @@ -5222,7 +5223,7 @@ void process_main(void) OpCase(i_hibernate): { SWAPOUT; - if (hibernate(c_p, r(0), x(1), x(2), reg)) { + if (erts_hibernate(c_p, r(0), x(1), x(2), reg)) { goto do_schedule; } else { I = handle_error(c_p, I, reg, hibernate_3); @@ -6199,8 +6200,8 @@ fixed_apply(Process* p, Eterm* reg, Uint arity) return ep->address; } -static int -hibernate(Process* c_p, Eterm module, Eterm function, Eterm args, Eterm* reg) +int +erts_hibernate(Process* c_p, Eterm module, Eterm function, Eterm args, Eterm* reg) { int arity; Eterm tmp; |