/usr/lib/mlton/include/gc/sources.h is in mlton-basis 20100608-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | /* Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
* Jagannathan, and Stephen Weeks.
* Copyright (C) 1997-2000 NEC Research Institute.
*
* MLton is released under a BSD-style license.
* See the file MLton-LICENSE for details.
*/
#if (defined (MLTON_GC_INTERNAL_TYPES))
typedef uint32_t GC_sourceNameIndex;
#define PRISNI PRIu32
#define FMTSNI "%"PRISNI
typedef uint32_t GC_sourceLabelIndex;
#define PRISLI PRIu32
#define FMTSLI "%"PRISLI
typedef uint32_t GC_sourceIndex;
#define PRISI PRIu32
#define FMTSI "%"PRISI
#define SOURCES_INDEX_UNKNOWN 0
#define SOURCES_INDEX_GC 1
typedef uint32_t GC_sourceSeqIndex;
#define PRISSI PRIu32
#define FMTSSI "%"PRISSI
#define SOURCE_SEQ_UNKNOWN 0
#define SOURCE_SEQ_GC 1
typedef struct GC_source {
GC_sourceNameIndex sourceNameIndex;
GC_sourceSeqIndex successorSourceSeqIndex;
} *GC_source;
typedef struct GC_sourceLabel {
code_pointer label;
GC_sourceSeqIndex sourceSeqIndex;
} *GC_sourceLabel;
struct GC_sourceMaps {
volatile GC_sourceSeqIndex curSourceSeqsIndex;
/* frameSources is an array of cardinality frameLayoutsLength that
* for each stack frame, gives an index into sourceSeqs of the
* sequence of source functions corresponding to the frame.
*/
GC_sourceSeqIndex *frameSources;
uint32_t frameSourcesLength;
struct GC_sourceLabel *sourceLabels;
uint32_t sourceLabelsLength;
char **sourceNames;
uint32_t sourceNamesLength;
/* Each entry in sourceSeqs is a vector, whose first element is a
* length, and subsequent elements index into sources.
*/
uint32_t **sourceSeqs;
uint32_t sourceSeqsLength;
/* sources is an array of cardinality sourcesLength. Each entry
* specifies an index into sourceNames and an index into sourceSeqs,
* giving the name of the function and the successors, respectively.
*/
struct GC_source *sources;
uint32_t sourcesLength;
};
#endif /* (defined (MLTON_GC_INTERNAL_TYPES)) */
#if (defined (MLTON_GC_INTERNAL_FUNCS))
static inline GC_sourceSeqIndex getCachedStackTopFrameSourceSeqIndex (GC_state s);
static inline char* getSourceName (GC_state s, GC_sourceIndex i);
#if HAS_TIME_PROFILING
static inline int compareSourceLabels (const void *v1, const void *v2);
static void sortSourceLabels (GC_state s);
static void compressSourceLabels (GC_state s);
static void initSourceLabels (GC_state s);
#endif
static void showSources (GC_state s);
#endif /* (defined (MLTON_GC_INTERNAL_FUNCS)) */
#if (defined (MLTON_GC_INTERNAL_BASIS))
PRIVATE char* GC_sourceName (GC_state s, GC_sourceIndex i);
#endif /* (defined (MLTON_GC_INTERNAL_BASIS)) */
|