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.  */
4typedef int thread_state_flavor_t;
5typedef int exception_behavior_t;
6typedef unsigned int exception_mask_t;
7typedef unsigned int exception_handler_t;
8typedef unsigned int mach_msg_type_number_t;
9static 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
16typedef exception_handler_t *exception_handler_array_t;
17typedef thread_state_flavor_t *exception_flavor_array_t;
18
19
20int 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
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