diff options
author | Mikael Pettersson <[email protected]> | 2015-02-23 14:14:58 +0100 |
---|---|---|
committer | Mikael Pettersson <[email protected]> | 2015-02-26 21:16:57 +0100 |
commit | ec74d0123ae385f201e978c78fd985206a449830 (patch) | |
tree | 3c21b28586ac4d3fc97d0a836f20541b2b73e364 /erts/emulator/beam/global.h | |
parent | f473c64efaf61cb89b35934725e14b5a026f264c (diff) | |
download | otp-ec74d0123ae385f201e978c78fd985206a449830.tar.gz otp-ec74d0123ae385f201e978c78fd985206a449830.tar.bz2 otp-ec74d0123ae385f201e978c78fd985206a449830.zip |
hipe: change mfa_info_table lock to rwmutex
The hipe_mfa_info_table lock is currently a mutex, causing
unnecessary contention and serialization of lookups for
apply-like constructs.
- change the lock from a mutex to an rwmutex
- split hipe_get_na_nofail_locked into a "try" path which
only needs a read lock, and a "slow" path which requires
a write lock
- reimplement hipe_get_na_nofail (used by apply ops etc) to
first call the "try" path with a read lock, and if that
fails the "slow" path with a write lock
- reimplement hipe_get_na_nofail_locked (used by maintenance
code) to call the "try" path and then optionally the "slow"
path, but without taking locks since its caller already has
the write lock
- adjust remaining lock ops to take/release full write lock
- use _rwlocked as suffix on functions requiring a write lock
- change hipe_mfa_get_trampoline to call get_locked not put_locked,
allowing it to take a read lock instead of a write lock
- change hipe_find_mfa_from_ra() to only take a read lock
Diffstat (limited to 'erts/emulator/beam/global.h')
0 files changed, 0 insertions, 0 deletions