• David Feuer's avatar
    Finish stable split · f48e276a
    David Feuer authored
    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 #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: #15555
    Differential Revision: https://phabricator.haskell.org/D5084
ffi-chap.rst 33 KB