(define impc:ti:zone_cleanup
(lambda (ast)
`(let ((zone (llvm_peek_zone_stack))
(hooks:<i64,i8*,i8*>* (cast (tref zone 4)))
(hook:<i64,i8*,i8*>* (alloc))
(f (lambda () ,@(cdr ast) void)))
(tfill! hook 0 (cast f i8*) (cast hooks i8*))
(tset! zone 4 (cast hook i8*))
void)))