summaryrefslogtreecommitdiff
path: root/rts/CloneStack.h
blob: 7e43d090d18461ca7c8a091ad9e6cadd0da1a077 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/* ---------------------------------------------------------------------------
 *
 * (c) The GHC Team, 2020-2021
 *
 * Stack snapshotting and decoding. (Cloning and unwinding.)
 *
 *---------------------------------------------------------------------------*/

#pragma once

extern StgClosure DLL_IMPORT_DATA_VARNAME(base_GHCziStackziCloneStack_StackSnapshot_closure);
#define StackSnapshot_constructor_closure DLL_IMPORT_DATA_REF(base_GHCziStackziCloneStack_StackSnapshot_closure)

StgStack* cloneStack(Capability* capability, const StgStack* stack);

void sendCloneStackMessage(StgTSO *tso, HsStablePtr mvar);

StgMutArrPtrs* decodeClonedStack(Capability *cap, StgStack* stack);

#include "BeginPrivate.h"

#if defined(THREADED_RTS)
void handleCloneStackMessage(MessageCloneStack *msg);
#endif

StgWord getStackFrameCount(StgStack* stack);
StgWord getStackChunkClosureCount(StgStack* stack);
void copyPtrsToArray(Capability *cap, StgMutArrPtrs* arr, StgStack* stack);
StgClosure* createPtrClosure(Capability* cap, InfoProvEnt* ipe);
StgMutArrPtrs* allocateMutableArray(StgWord size);

#include "EndPrivate.h"