+STATIC void vmg_thread_cleanup(pTHX_ void *);
+
+STATIC void vmg_thread_cleanup(pTHX_ void *ud) {
+ int *level = ud;
+
+ if (*level) {
+ --*level;
+ LEAVE;
+ SAVEDESTRUCTOR_X(vmg_thread_cleanup, level);
+ ENTER;
+ } else {
+ dMY_CXT;
+ PerlMemShared_free(level);
+ ptable_free(MY_CXT.wizards);
+ }
+}