On Tuesday 29 April 2008 10:01:27 [EMAIL PROTECTED] wrote: > Log: > [pdd25cx] Merge in my port of Exceptions PMC to use core struct instead of > array for attribute storage. > - Keep 'type' attribute. > - Use attribute access macros instead of direct struct manipulation so > Exception PMC is subclassable from HLL.
> --- branches/pdd25cx/src/pmc/exception.pmc (original) > +++ branches/pdd25cx/src/pmc/exception.pmc Tue Apr 29 10:01:26 2008 > @@ -71,23 +46,19 @@ > > #include "parrot/parrot.h" > > -/* > - > -=head2 Methods > +pmclass Exception extends ResizablePMCArray need_ext { We should be able to remove 'extends ResizablePMCArray' now, right? > @@ -98,16 +69,20 @@ > */ > > VTABLE void init() { > - Parrot_Exception * const exception = > + Parrot_Exception * const core_struct = > mem_allocate_zeroed_typed(Parrot_Exception); > > + /* Set flags for custom DOD mark and destroy. */ > PObj_custom_mark_SET(SELF); > PObj_active_destroy_SET(SELF); > > - PMC_data(SELF) = exception; > - exception->message = CONST_STRING(interp, ""); > - exception->severity = 0; > - exception->payload = PMCNULL; > + /* Set up the core struct and default values for the exception > object. */ + PMC_data(SELF) = core_struct; > + core_struct->message = CONST_STRING(interp, ""); > + core_struct->payload = PMCNULL; > + core_struct->severity = 0; > + core_struct->type = 0; > + core_struct->exit_code = 0; These are unnecessary; mem_allocate_zeroed_typed() has already set them to zero. -- c