aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_db_util.c
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2010-04-23 10:04:42 +0200
committerBjörn Gustavsson <[email protected]>2010-05-11 08:54:26 +0200
commit9c91901e8e57fd6366fd966e754a62a8a205c000 (patch)
tree9c8299fcb4752ec79e32d20d1bd4c56f47b32a94 /erts/emulator/beam/erl_db_util.c
parentf7829c91d742f1daea27b7ff5d8dcb5f262fd3a9 (diff)
downloadotp-9c91901e8e57fd6366fd966e754a62a8a205c000.tar.gz
otp-9c91901e8e57fd6366fd966e754a62a8a205c000.tar.bz2
otp-9c91901e8e57fd6366fd966e754a62a8a205c000.zip
erts: Implement recv_mark/1 and recv_set/1 for real
The recv_mark/1 instruction will both save the current position in the message queue and a mark (the address of the loop_rec/2 instruction just following the recv_set/1 instruction). The recv_mark/1 instruction will only use the saved position if the mark is correct. The reason for saving and verifying the mark is that the compiler does not need to guarantee that no other receive instruction can be executed in between the recv_mark/1 and recv_set/1 instructions (the mark will be cleared by the remove_message/0 instruction when a message is removed from the message queue). That means that arbitrary function calls in between those instruction can be allowed.
Diffstat (limited to 'erts/emulator/beam/erl_db_util.c')
0 files changed, 0 insertions, 0 deletions