add comments
authorJason Merrill <jason@gcc.gnu.org>
Fri, 15 Mar 2002 10:18:21 +0000 (05:18 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 15 Mar 2002 10:18:21 +0000 (05:18 -0500)
From-SVN: r50805

gcc/unwind-dw2.c
gcc/unwind.inc

index d3828e97ad4e3da4130fec68ec7a7144d7abff1a..e873f50d8ccaeb479e97a7c74009387e9b86af5e 100644 (file)
@@ -48,7 +48,9 @@
 #define PRE_GCC3_DWARF_FRAME_REGISTERS DWARF_FRAME_REGISTERS
 #endif
 
-/* This is the register and unwind state for a particular frame.  */
+/* This is the register and unwind state for a particular frame.  This
+   provides the information necessary to unwind up past a frame and return
+   to its caller.  */
 struct _Unwind_Context
 {
   void *reg[DWARF_FRAME_REGISTERS+1];
@@ -889,6 +891,11 @@ execute_cfa_program (const unsigned char *insn_ptr,
     }
 }
 \f
+/* Given the _Unwind_Context CONTEXT for a stack frame, look up the FDE for
+   its caller and decode it into FS.  This function also sets the
+   args_size and lsda members of CONTEXT, as they are really information
+   about the caller's frame.  */
+
 static _Unwind_Reason_Code
 uw_frame_state_for (struct _Unwind_Context *context, _Unwind_FrameState *fs)
 {
@@ -1083,6 +1090,11 @@ uw_update_context_1 (struct _Unwind_Context *context, _Unwind_FrameState *fs)
       }
 }
 
+/* CONTEXT describes the unwind state for a frame, and FS describes the FDE
+   of its caller.  Update CONTEXT to refer to the caller as well.  Note
+   that the args_size and lsda members are not updated here, but later in
+   uw_frame_state_for.  */
+
 static void
 uw_update_context (struct _Unwind_Context *context, _Unwind_FrameState *fs)
 {
index f00441ea02430c280ac9439c39883990e7b17d01..0422cb81a03fd96b0d99d57cefd58e1634e7eaf4 100644 (file)
@@ -72,7 +72,6 @@ _Unwind_RaiseException_Phase2(struct _Unwind_Exception *exc,
   return code;
 }
 
-
 /* Raise an exception, passing along the given exception object.  */
 
 _Unwind_Reason_Code
@@ -81,6 +80,7 @@ _Unwind_RaiseException(struct _Unwind_Exception *exc)
   struct _Unwind_Context this_context, cur_context;
   _Unwind_Reason_Code code;
 
+  /* Set up this_context to describe the current stack frame.  */
   uw_init_context (&this_context);
   cur_context = this_context;
 
@@ -90,6 +90,8 @@ _Unwind_RaiseException(struct _Unwind_Exception *exc)
     {
       _Unwind_FrameState fs;
 
+      /* Set up fs to describe the FDE for the caller of cur_context.  The
+        first time through the loop, that means __cxa_throw.  */
       code = uw_frame_state_for (&cur_context, &fs);
 
       if (code == _URC_END_OF_STACK)
@@ -112,6 +114,7 @@ _Unwind_RaiseException(struct _Unwind_Exception *exc)
            return _URC_FATAL_PHASE1_ERROR;
        }
 
+      /* Update cur_context to describe the same frame as fs.  */
       uw_update_context (&cur_context, &fs);
     }
 
@@ -144,6 +147,7 @@ _Unwind_ForcedUnwind_Phase2(struct _Unwind_Exception *exc,
       _Unwind_FrameState fs;
       int action;
 
+      /* Set up fs to describe the FDE for the caller of cur_context.  */
       code = uw_frame_state_for (context, &fs);
       if (code != _URC_NO_REASON && code != _URC_END_OF_STACK)
        return _URC_FATAL_PHASE2_ERROR;
@@ -172,6 +176,7 @@ _Unwind_ForcedUnwind_Phase2(struct _Unwind_Exception *exc,
            return _URC_FATAL_PHASE2_ERROR;
        }
 
+      /* Update cur_context to describe the same frame as fs.  */
       uw_update_context (context, &fs);
     }