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 /lib/compiler/src | |
| 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 'lib/compiler/src')
0 files changed, 0 insertions, 0 deletions
