void destroy(void *v) { Heap *h; Type *t; if(v == H) return; h = D2H(v); { Bhdr *b; D2B(b, h); } /* consistency check */ if(--h->ref > 0 || gchalt > 64) /* Protect 'C' thread stack */ return; if(heapmonitor != nil) heapmonitor(1, h, 0); t = h->t; if(t != nil) { gclock(); t->free(h, 0); gcunlock(); freetype(t); } poolfree(heapmem, h); }
bool MM () { double rsTR, rsPR, rsLG; long lsTR, lsPR, lsLG; rsTR = TR (); rsPR = log10C (PR32 (D2B (pow (2, rsTR)), Odd_), rsTR); rsLG = log10C (rsTR, PR32 (D2B (rsTR), Odd_)); lsTR = D2B (rsTR); lsPR = D2B (rsPR); lsLG = D2B (rsLG); unsigned long l = 0xAC1DFACEL; struct int_sqrt q, m; US (l, &q); unsigned long rZ = lsTR + q.sqrt + lsPR + lsLG; if (construct (rZ) == true) { return (true); } else { return (false); }; }