X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Futils%2Fmono-stack-unwinding.h;h=82f6127a8a67023cbee08f2ed67bacb081f0b2e5;hb=79cc1aeccd086b2d9006d6e549426d4ac1ceb80e;hp=cfeb19d31b9f5960698c4925ba8ecb13e711c757;hpb=aea57f09d430ae672e03d96729d447c814ec867c;p=mono.git diff --git a/mono/utils/mono-stack-unwinding.h b/mono/utils/mono-stack-unwinding.h index cfeb19d31b9..82f6127a8a6 100644 --- a/mono/utils/mono-stack-unwinding.h +++ b/mono/utils/mono-stack-unwinding.h @@ -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__ @@ -20,7 +22,11 @@ typedef enum { /* Frame for transitioning to native code */ FRAME_TYPE_MANAGED_TO_NATIVE = 2, FRAME_TYPE_TRAMPOLINE = 3, - FRAME_TYPE_NUM = 4 + /* 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 { @@ -58,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. @@ -71,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; @@ -94,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;