diff options
author | Rickard Green <[email protected]> | 2017-02-17 15:26:01 +0100 |
---|---|---|
committer | Rickard Green <[email protected]> | 2017-02-20 14:40:16 +0100 |
commit | 0a144d1fc4bebefcc74b0cb63fe76809bc041789 (patch) | |
tree | 164ac556f93f6b2531a9fb168509d58db66c938c /lib/stdlib/src/sofs.erl | |
parent | aa315e1cf1b79ab782e5b4c944595495ebf4e2f4 (diff) | |
download | otp-0a144d1fc4bebefcc74b0cb63fe76809bc041789.tar.gz otp-0a144d1fc4bebefcc74b0cb63fe76809bc041789.tar.bz2 otp-0a144d1fc4bebefcc74b0cb63fe76809bc041789.zip |
Ensure prim_eval:'receive' wont clobber def_arg_reg[0]
def_arg_reg[0] is used for storage of timeout instruction
when a 'receive after' is executed. When a process was
scheduled out inside prim_eval:'receive'/0 due to a function
call, def_arg_reg[0] was overwritten due to storage of live
registers.
prim_eval:'receive'/2 now calls arg_reg_alloc/0 which
bumps all reductions and then calls arg_reg_alloc/7
which will cause an allocation of a new arg_reg array
since def_arg_reg only can hold 6 values. This ensures
that the timeout instruction in def_arg_reg[0] used
for the timeout wont be overwritten.
Diffstat (limited to 'lib/stdlib/src/sofs.erl')
0 files changed, 0 insertions, 0 deletions