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()27 void 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