Re: [GHC] #693: dynamic locking

#693: dynamic locking ----------------------------+---------------------------------------------- Reporter: | Owner: simonmar simonmar | Status: closed Type: task | Milestone: 7.8.1 Priority: low | Version: 6.4.1 Component: Runtime | Keywords: System | Architecture: Unknown/Multiple Resolution: fixed | Difficulty: Moderate (less than a day) Operating System: | Blocked By: Unknown/Multiple | Related Tickets: Type of failure: | None/Unknown | Test Case: N/A | Blocking: | ----------------------------+---------------------------------------------- Comment (by ezyang): The way the C-- code is written now seems really odd. {{{ @@ -1290,7 +1295,12 @@ stg_tryTakeMVarzh ( P_ mvar /* :: MVar a */ ) W_ val, info, tso, q; #if defined(THREADED_RTS) - ("ptr" info) = ccall lockClosure(mvar "ptr"); + if (CInt[n_capabilities] == 1 :: CInt) { + info = GET_INFO(mvar); + } + else { + ("ptr" info) = ccall reallyLockClosure(mvar "ptr"); + } #else info = GET_INFO(mvar); #endif }}} Why can't it just call lockClosure? Is the concern here the cost of the extra jump? Seems like we should make a macro for this, then. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/693#comment:13 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC