From: <er...@us...> - 2008-03-02 15:09:02
|
Revision: 6318 http://gobo-eiffel.svn.sourceforge.net/gobo-eiffel/?rev=6318&view=rev Author: ericb Date: 2008-03-02 07:08:34 -0800 (Sun, 02 Mar 2008) Log Message: ----------- Made the 'dispose' mechanism work with the Boehm GC when the exception_trace option is specified. Modified Paths: -------------- gobo/trunk/library/tools/eiffel/generation/et_c_generator.e gobo/trunk/tool/gec/runtime/c/ge_gc.c gobo/trunk/tool/gec/runtime/c/ge_gc.h Modified: gobo/trunk/library/tools/eiffel/generation/et_c_generator.e =================================================================== --- gobo/trunk/library/tools/eiffel/generation/et_c_generator.e 2008-03-02 08:05:07 UTC (rev 6317) +++ gobo/trunk/library/tools/eiffel/generation/et_c_generator.e 2008-03-02 15:08:34 UTC (rev 6318) @@ -589,6 +589,12 @@ header_file.put_line (c_eif_trace) header_file.put_new_line end + if exception_trace_mode then + header_file.put_string (c_define) + header_file.put_character (' ') + header_file.put_line (c_eif_exception_trace) + header_file.put_new_line + end if use_boehm_gc then header_file.put_string (c_define) header_file.put_character (' ') @@ -24599,6 +24605,7 @@ c_eif_character_8: STRING is "EIF_CHARACTER_8" c_eif_character_32: STRING is "EIF_CHARACTER_32" c_eif_double: STRING is "EIF_DOUBLE" + c_eif_exception_trace: STRING is "EIF_EXCEPTION_TRACE" c_eif_false: STRING is "EIF_FALSE" c_eif_integer: STRING is "EIF_INTEGER" c_eif_integer_8: STRING is "EIF_INTEGER_8" Modified: gobo/trunk/tool/gec/runtime/c/ge_gc.c =================================================================== --- gobo/trunk/tool/gec/runtime/c/ge_gc.c 2008-03-02 08:05:07 UTC (rev 6317) +++ gobo/trunk/tool/gec/runtime/c/ge_gc.c 2008-03-02 15:08:34 UTC (rev 6318) @@ -18,7 +18,11 @@ * Call dispose routine `disp' on object `C'. */ void GE_boehm_dispose(void* C, void* disp) { +#ifdef EIF_EXCEPTION_TRACE + ((GE_types[((EIF_REFERENCE)C)->id]).dispose)(0,(EIF_REFERENCE)C); +#else ((GE_types[((EIF_REFERENCE)C)->id]).dispose)((EIF_REFERENCE)C); +#endif } #endif Modified: gobo/trunk/tool/gec/runtime/c/ge_gc.h =================================================================== --- gobo/trunk/tool/gec/runtime/c/ge_gc.h 2008-03-02 08:05:07 UTC (rev 6317) +++ gobo/trunk/tool/gec/runtime/c/ge_gc.h 2008-03-02 15:08:34 UTC (rev 6318) @@ -65,7 +65,7 @@ /* * Register dispose routine `disp' to be called on object `obj' when it will be collected. */ -#define GE_register_dispose(obj, disp) GC_REGISTER_FINALIZER((void*)(obj), (void (*) (void*, void*)) &GE_boehm_dispose, (void*)(disp), NULL, NULL) +#define GE_register_dispose(obj, disp) GC_REGISTER_FINALIZER((void*)(obj), (void (*) (void*, void*)) &GE_boehm_dispose, NULL, NULL, NULL) #else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |