Catch frames contain much of the same information that call frames do, and have a very similar format. A catch frame holds the function object for the current function, a stack pointer to the current active frame, a pointer to the current top of the binding stack, and a pointer to the previous catch frame. When a Throw occurs, an operation similar to returning from this catch frame (as if it were a call frame) is performed, and the stacks are unwound to the proper place for continued execution in the current function. A catch frame looks like this:
0 Pointer to current binding stack. 1 Pointer to current active frame. 2 Pointer to current function object. 3 Destination PC for a Throw. 4 Tag caught by this catch frame. 5 Pointer to previous catch frame.
The conventions used to manipulate call and catch frames are described in chapter Control-Conventions.