Finish stable split
Long ago, the stable name table and stable pointer tables were one.
Now, they are separate, and have significantly different
implementations. I believe the time has come to finish the split
that began in Trac #7674.
- Divide rts/Stable into rts/StableName and rts/StablePtr.
- Give each table its own mutex.
- Add FFI functions hs_lock_stable_ptr_table and
hs_unlock_stable_ptr_table and document them.
These are intended to replace the previously undocumented
hs_lock_stable_tables and hs_lock_stable_tables,
which are now documented as deprecated synonyms.
- Make eqStableName# use pointer equality instead of unnecessarily
comparing stable name table indices.
Reviewers: simonmar, bgamari, erikd
Reviewed By: bgamari
Subscribers: rwbarton, carter
GHC Trac Issues: Trac #15555
Differential Revision: https://phabricator.haskell.org/D5084