1 /* Extracted from boehm-gc/os_dep.c on Darwin. It caused an ICE when 2 trying to merge alias information from two pointers that had 3 different type memory tags. */ 4 typedef int thread_state_flavor_t; 5 typedef int exception_behavior_t; 6 typedef unsigned int exception_mask_t; 7 typedef unsigned int exception_handler_t; 8 typedef unsigned int mach_msg_type_number_t; 9 static struct { 10 mach_msg_type_number_t count; 11 exception_mask_t masks[16]; 12 exception_handler_t ports[16]; 13 thread_state_flavor_t flavors[16]; 14 } GC_old_exc_ports; 15 16 typedef exception_handler_t *exception_handler_array_t; 17 typedef thread_state_flavor_t *exception_flavor_array_t; 18 19 20 int task_get_exception_ports 21 ( 22 mach_msg_type_number_t *masksCnt, 23 exception_handler_array_t old_handlers, 24 exception_flavor_array_t old_flavors 25 ); 26 GC_dirty_init()27void GC_dirty_init() 28 { 29 task_get_exception_ports(GC_old_exc_ports.masks, 30 GC_old_exc_ports.ports, 31 GC_old_exc_ports.flavors); 32 } 33