Files
swift-mirror/utils/dtrace/runtime.d
Michael Gottesman 31b9229dd8 [gardening] Move ./swift/utils/*.d => ./swift/utils/dtrace/*.d.
The 'utils' folder has become a dumping ground. This is an attempt to clean it
up a little bit.
2016-02-28 13:46:06 -08:00

43 lines
1.1 KiB
D

/* DTrace types and macros for runtime data structures */
enum MetadataKind {
StructMetadataKind = 1,
EnumMetadataKind = 2,
OpaqueMetadataKind = 8,
TupleMetadataKind = 9,
FunctionMetadataKind = 10,
ExistentialMetadataKind = 12,
MetatypeMetadataKind = 13,
ObjCClassWrapperKind = 14,
HeapLocalVariableKind = 64,
HeapArrayKind = 65
};
typedef struct NominalTypeDescriptor {
unsigned long kind;
const char *name;
unsigned long numFields;
unsigned long fieldOffsetVectorOffset;
const char *fieldNames;
} NominalTypeDescriptor;
typedef struct Metadata {
void *valueWitnessTable;
unsigned long kind;
} Metadata;
typedef struct ClassMetadata {
void *valueWitnessTable;
struct ClassMetadata *isa;
struct ClassMetadata *super;
void *data[3];
NominalTypeDescriptor *descriptor;
unsigned long instanceSize, instanceAlign;
} ClassMetadata;
#define copyinMetadata(T, ptr) \
((T*)copyin((unsigned long)(ptr) - sizeof(void*), sizeof(T)))
#define copyinNominalTypeDescriptor(ptr) \
((NominalTypeDescriptor*)copyin((unsigned long)(ptr), sizeof(NominalTypeDescriptor)))