Align libgc vcxproj with makefile.
[mono.git] / mono / utils / mono-stack-unwinding.h
index d821f3c5e32b167c5b8c868668f0cb931da592da..82f6127a8a67023cbee08f2ed67bacb081f0b2e5 100644 (file)
@@ -1,6 +1,8 @@
-/*
+/**
+ * \file
  * Copyright 2008-2010 Novell, Inc.
  * Copyright 2011 Xamarin Inc.
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
  */
 #ifndef __MONO_MONO_STACK_UNWINDING_H__
 #define __MONO_MONO_STACK_UNWINDING_H__
@@ -19,7 +21,12 @@ typedef enum {
        FRAME_TYPE_DEBUGGER_INVOKE = 1,
        /* Frame for transitioning to native code */
        FRAME_TYPE_MANAGED_TO_NATIVE = 2,
-       FRAME_TYPE_SENTINEL = 3
+       FRAME_TYPE_TRAMPOLINE = 3,
+       /* Interpreter frame */
+       FRAME_TYPE_INTERP = 4,
+       /* Frame for transitioning from interpreter to managed code */
+       FRAME_TYPE_INTERP_TO_MANAGED = 5,
+       FRAME_TYPE_NUM = 6
 } MonoStackFrameType;
 
 typedef enum {
@@ -57,6 +64,7 @@ typedef struct {
        MonoMethod *actual_method;
        /* The domain containing the code executed by this frame */
        MonoDomain *domain;
+       /* Whenever method is a user level method */
        gboolean managed;
        /*
         * Whenever this frame was loaded in async context.
@@ -70,6 +78,12 @@ typedef struct {
         */
        int il_offset;
 
+       /* For FRAME_TYPE_INTERP_EXIT */
+       gpointer interp_exit_data;
+
+       /* For FRAME_TYPE_INTERP */
+       gpointer interp_frame;
+
        /* The next fields are only useful for the jit */
        gpointer lmf;
        guint32 unwind_info_len;
@@ -93,6 +107,8 @@ typedef struct {
        MonoContext ctx;
        gpointer unwind_data [3]; /*right now: domain, lmf and jit_tls*/
        gboolean valid;
+       void *gc_stackdata;
+       int gc_stackdata_size;
 } MonoThreadUnwindState;