{"push_id":586256808,"size":1,"distinct_size":1,"ref":"refs/heads/hipe-mfait-rwlock","head":"ec74d0123ae385f201e978c78fd985206a449830","before":"41c982201d80b9e448812c989218d3094be1a5e7","commits":[{"sha":"ec74d0123ae385f201e978c78fd985206a449830","author":{"email":"5a6dfaa0f97b53eda10517849a53cd4b3eb6a449@gmail.com","name":"Mikael Pettersson"},"message":"hipe: change mfa_info_table lock to rwmutex\n\nThe hipe_mfa_info_table lock is currently a mutex, causing\nunnecessary contention and serialization of lookups for\napply-like constructs.\n\n- change the lock from a mutex to an rwmutex\n- split hipe_get_na_nofail_locked into a \"try\" path which\n  only needs a read lock, and a \"slow\" path which requires\n  a write lock\n- reimplement hipe_get_na_nofail (used by apply ops etc) to\n  first call the \"try\" path with a read lock, and if that\n  fails the \"slow\" path with a write lock\n- reimplement hipe_get_na_nofail_locked (used by maintenance\n  code) to call the \"try\" path and then optionally the \"slow\"\n  path, but without taking locks since its caller already has\n  the write lock\n- adjust remaining lock ops to take/release full write lock\n- use _rwlocked as suffix on functions requiring a write lock\n- change hipe_mfa_get_trampoline to call get_locked not put_locked,\n  allowing it to take a read lock instead of a write lock\n- change hipe_find_mfa_from_ra() to only take a read lock","distinct":true,"url":"https://api.github.com/repos/mikpe/otp/commits/ec74d0123ae385f201e978c78fd985206a449830"}]}