aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/hipe/hipe_bif1.h
diff options
context:
space:
mode:
authorMikael Pettersson <[email protected]>2015-02-23 14:14:58 +0100
committerMikael Pettersson <[email protected]>2015-02-26 21:16:57 +0100
commitec74d0123ae385f201e978c78fd985206a449830 (patch)
tree3c21b28586ac4d3fc97d0a836f20541b2b73e364 /erts/emulator/hipe/hipe_bif1.h
parentf473c64efaf61cb89b35934725e14b5a026f264c (diff)
downloadotp-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/hipe/hipe_bif1.h')
0 files changed, 0 insertions, 0 deletions