Finish stable split

Authored by dfeuer on Aug 29 2018, 3:34 PM.

Description

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