1 #ifndef _vat__h__included__
2 #define _vat__h__included__
13 /******************************************************************************
19 * vat The vat to manipulate.
21 *****************************************************************************/
22 void vat_grab_queue_lock();
24 /******************************************************************************
30 * vat The vat to manipulate.
32 *****************************************************************************/
33 void vat_ungrab_queue_lock();
35 /******************************************************************************
38 * Queue message into vat message queue.
42 * message The message to queue.
44 *****************************************************************************/
45 void vat_queue_message(struct vat
* vat
, struct message
* message
);
47 /******************************************************************************
50 * Perform full mark and sweep GC on vat.
56 * 1 if objects still remain, 0 if vat is now empty.
58 *****************************************************************************/
59 unsigned vat_perform_gc(struct vat
* vat
);
61 /******************************************************************************
64 * Get maximum number of locals.
70 * Maximum locals count.
72 *****************************************************************************/
73 size_t vat_maxlocals(struct vat
* vat
);
75 /******************************************************************************
81 * maxlocals Maximum locals count.
86 *****************************************************************************/
87 struct vat
* vat_create(size_t maxlocals
);
89 /******************************************************************************
92 * Destroy vat, and all objects in it.
95 * vat The vat to destroy.
97 *****************************************************************************/
98 void vat_destroy(struct vat
* vat
);
100 /******************************************************************************
106 * vat The vat to manipulate.
107 * object The object to add.
109 *****************************************************************************/
110 void vat_add_object(struct vat
* vat
, struct object
* object
);
112 /******************************************************************************
115 * Deque message from vat message queue.
118 * vat The vat to manipulate.
123 *****************************************************************************/
124 struct message
* vat_deque_message(struct vat
* vat
);