ghc-lib-parser-9.6.2.20230523: The GHC API, decoupled from GHC versions
Safe HaskellSafe-Inferred
LanguageHaskell2010

GHCi.RemoteTypes

Description

Types for referring to remote objects in Remote GHCi. For more details, see Note [External GHCi pointers] in compilerGHCRuntime/Interpreter.hs

For details on Remote GHCi, see Note [Remote GHCi] in compilerGHCRuntime/Interpreter.hs.

Synopsis

Documentation

newtype RemotePtr a Source #

Constructors

RemotePtr Word64 

Instances

Instances details
Show (RemotePtr a) Source # 
Instance details

Defined in GHCi.RemoteTypes

Binary (RemotePtr a) Source # 
Instance details

Defined in GHCi.RemoteTypes

Methods

put :: RemotePtr a -> Put #

get :: Get (RemotePtr a) #

putList :: [RemotePtr a] -> Put #

NFData (RemotePtr a) Source # 
Instance details

Defined in GHCi.RemoteTypes

Methods

rnf :: RemotePtr a -> () #

newtype HValue Source #

Constructors

HValue Any 

Instances

Instances details
Show HValue Source # 
Instance details

Defined in GHCi.RemoteTypes

data RemoteRef a Source #

A reference to a remote value. These are allocated and freed explicitly.

Instances

Instances details
Show (RemoteRef a) Source # 
Instance details

Defined in GHCi.RemoteTypes

Binary (RemoteRef a) Source # 
Instance details

Defined in GHCi.RemoteTypes

Methods

put :: RemoteRef a -> Put #

get :: Get (RemoteRef a) #

putList :: [RemoteRef a] -> Put #

mkRemoteRef :: a -> IO (RemoteRef a) Source #

Make a reference to a local value that we can send remotely. This reference will keep the value that it refers to alive until freeRemoteRef is called.

localRef :: RemoteRef a -> IO a Source #

Convert an HValueRef to an HValue. Should only be used if the HValue originated in this process.

freeRemoteRef :: RemoteRef a -> IO () Source #

Release an HValueRef that originated in this process

data ForeignRef a Source #

An HValueRef with a finalizer

Instances

Instances details
NFData (ForeignRef a) Source # 
Instance details

Defined in GHCi.RemoteTypes

Methods

rnf :: ForeignRef a -> () #

mkForeignRef :: RemoteRef a -> IO () -> IO (ForeignRef a) Source #

Create a ForeignRef from a RemoteRef. The finalizer should arrange to call freeHValueRef on the HValueRef. (since this function needs to be called in the process that created the HValueRef, it cannot be called directly from the finalizer).