This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [objc] exception handling rewrite; gnu runtime operational
- From: Richard Henderson <rth at redhat dot com>
- To: David Ayers <d dot ayers at inode dot at>
- Cc: Andrew Pinski <pinskia at physics dot uc dot edu>, Nicola Pero <nicola at brainstorm dot co dot uk>, gcc-patches at gcc dot gnu dot org
- Date: Fri, 18 Jun 2004 15:19:58 -0700
- Subject: Re: [objc] exception handling rewrite; gnu runtime operational
- References: <200406181603.i5IG3ea25293@tin.geop.uc.edu> <40D361A2.5020407@inode.at>
On Fri, Jun 18, 2004 at 11:41:54PM +0200, David Ayers wrote:
> #define TAG_EXCEPTIONEXTRACT "objc_exception_extract"
This retrieves the exception object from the setjmp struct. For
gcc native exceptions this is handled behind the scenes and is
represented in the tree data structures by EXC_PTR_EXPR.
> #define TAG_EXCEPTIONTRYENTER "objc_exception_try_enter"
> #define TAG_EXCEPTIONTRYEXIT "objc_exception_try_exit"
These manage the setjmp struct. Natually not needed for gcc
native exceptions.
> #define TAG_EXCEPTIONMATCH "objc_exception_match"
Determines if the catch type matches the exception object.
This is handled by isKindOf in libobjc/exception.c. Note
the comment there wondering if we needed something more
than the simplistic check there.
> #define TAG_EXCEPTIONTHROW "objc_exception_throw"
Already replicated in libobjc/exception.c. I don't think
there's anything otherwise necessary, modulo potential
out-of-memory concerns.
> #define TAG_SYNCENTER "objc_sync_enter"
> #define TAG_SYNCEXIT "objc_sync_exit"
Need to be implemented.
> #define TAG_SETJMP "_setjmp"
Duh.
> #define UTAG_EXCDATA "_objc_exception_data"
> #define UTAG_EXCDATA_VAR "_stackExceptionData"
> #define UTAG_CAUGHTEXC_VAR "_caughtException"
> #define UTAG_RETHROWEXC_VAR "_rethrowException"
These were *local* data variable names used during the generation
of code. Now handled in the new code by objc_create_temporary.
r~