Initial set of Ward sgen annotations (#5705)
[mono.git] / mono / utils / mono-error.h
index 12747711fc4206244e052500c8e48a373cde246b..30c4493e5197653fc487abc5b17a14d04ee182b8 100644 (file)
@@ -1,3 +1,7 @@
+/**
+ * \file
+ */
+
 #ifndef __MONO_ERROR_H__
 #define __MONO_ERROR_H__
 
@@ -12,7 +16,11 @@ enum {
        /*
        Something happened while processing the error and the resulting message is incomplete.
        */
-       MONO_ERROR_INCOMPLETE = 0x0002
+       MONO_ERROR_INCOMPLETE = 0x0002,
+       /*
+       This MonoError is heap allocated in a mempool
+        */
+       MONO_ERROR_MEMPOOL_BOXED = 0x0004
 };
 
 enum {
@@ -24,12 +32,20 @@ enum {
        MONO_ERROR_BAD_IMAGE = 5,
        MONO_ERROR_OUT_OF_MEMORY = 6,
        MONO_ERROR_ARGUMENT = 7,
+       MONO_ERROR_ARGUMENT_NULL = 11,
        MONO_ERROR_NOT_VERIFIABLE = 8,
+       MONO_ERROR_INVALID_PROGRAM = 12,
+
        /*
         * This is a generic error mechanism is you need to raise an arbitrary corlib exception.
         * You must pass the exception name otherwise prepare_exception will fail with internal execution. 
         */
-       MONO_ERROR_GENERIC = 9
+       MONO_ERROR_GENERIC = 9,
+       /* This one encapsulates a managed exception instance */
+       MONO_ERROR_EXCEPTION_INSTANCE = 10,
+
+       /* Not a valid error code - indicates that the error was cleaned up and reused */
+       MONO_ERROR_CLEANUP_CALLED_SENTINEL = 0xffff
 };
 
 /*Keep in sync with MonoErrorInternal*/
@@ -40,8 +56,12 @@ typedef struct _MonoError {
        void *hidden_1 [12]; /*DON'T TOUCH */
 } MonoError;
 
+/* Mempool-allocated MonoError.*/
+typedef struct _MonoErrorBoxed MonoErrorBoxed;
+
 MONO_BEGIN_DECLS
 
+MONO_RT_EXTERNAL_ONLY
 MONO_API void
 mono_error_init (MonoError *error);