summaryrefslogtreecommitdiff
path: root/includes/compiler/Exceptions.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--includes/compiler/Exceptions.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/includes/compiler/Exceptions.h b/includes/compiler/Exceptions.h
index f1096c8..cc485b0 100644
--- a/includes/compiler/Exceptions.h
+++ b/includes/compiler/Exceptions.h
@@ -62,6 +62,11 @@ struct ExceptionAction {
Object *dtor;
Object *element_size;
} destroy_partial_array;
+ struct { // TODO: merge me with destroy_member
+ Object *objectptr;
+ Object *dtor;
+ SInt32 offset;
+ } destroy_base;
struct {
Object *objectptr;
Object *dtor;
@@ -115,8 +120,33 @@ struct ExceptionAction {
ExceptionActionType type;
};
+typedef struct EANode {
+ struct EANode *dagListNext;
+ struct EANode *prev;
+ ExceptionAction *action;
+ UInt16 count;
+ UInt16 xE;
+} EANode;
+
+typedef struct PCAction {
+ struct PCAction *next;
+ struct PCAction *prev;
+ PCode *firstInstr;
+ PCode *lastInstr;
+ ExceptionAction *actions;
+ EANode *node;
+} PCAction;
+
#ifdef __MWERKS__
#pragma options align=reset
#endif
+extern EANode *DAG[EAT_NACTIONS];
+
+extern int countexceptionactionregisters(ExceptionAction *actions);
+extern void noteexceptionactionregisters(ExceptionAction *actions, PCodeArg *ops);
+extern void recordexceptionactions(PCode *instr, ExceptionAction *actions);
+extern void deleteexceptionaction(PCAction *pca);
+extern void dumpexceptiontables(Object *function, SInt32 codesize);
+
#endif