aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_gc.h
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2017-02-17 15:26:01 +0100
committerRickard Green <[email protected]>2017-02-20 14:40:16 +0100
commit0a144d1fc4bebefcc74b0cb63fe76809bc041789 (patch)
tree164ac556f93f6b2531a9fb168509d58db66c938c /erts/emulator/beam/erl_gc.h
parentaa315e1cf1b79ab782e5b4c944595495ebf4e2f4 (diff)
downloadotp-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 'erts/emulator/beam/erl_gc.h')
0 files changed, 0 insertions, 0 deletions