diff options
Diffstat (limited to 'compiler/ghci/GHCi.hs')
-rw-r--r-- | compiler/ghci/GHCi.hs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler/ghci/GHCi.hs b/compiler/ghci/GHCi.hs index 472f0857cb..579053999f 100644 --- a/compiler/ghci/GHCi.hs +++ b/compiler/ghci/GHCi.hs @@ -21,6 +21,8 @@ module GHCi , enableBreakpoint , breakpointStatus , getBreakpointVar + , getClosure + , seqHValue -- * The object-code linker , initObjLinker @@ -77,6 +79,7 @@ import Data.ByteString (ByteString) import qualified Data.ByteString.Lazy as LB import Data.IORef import Foreign hiding (void) +import GHC.Exts.Heap import GHC.Stack.CCS (CostCentre,CostCentreStack) import System.Exit import Data.Maybe @@ -350,6 +353,17 @@ getBreakpointVar hsc_env ref ix = mb <- iservCmd hsc_env (GetBreakpointVar apStack ix) mapM (mkFinalizedHValue hsc_env) mb +getClosure :: HscEnv -> ForeignHValue -> IO (GenClosure ForeignHValue) +getClosure hsc_env ref = + withForeignRef ref $ \hval -> do + mb <- iservCmd hsc_env (GetClosure hval) + mapM (mkFinalizedHValue hsc_env) mb + +seqHValue :: HscEnv -> ForeignHValue -> IO () +seqHValue hsc_env ref = + withForeignRef ref $ \hval -> + iservCmd hsc_env (Seq hval) >>= fromEvalResult + -- ----------------------------------------------------------------------------- -- Interface to the object-code linker |