void idris_requireAlloc(VM* vm, size_t size) { if (!(vm->heap.next + size < vm->heap.end)) { idris_gc(vm); } int lock = vm->processes > 0; if (lock) { // not message passing pthread_mutex_lock(&vm->alloc_lock); } }
void idris_requireAlloc(VM* vm, size_t size) { if (!(vm->heap.next + size < vm->heap.end)) { idris_gc(vm); } int lock = vm->processes > 0; if (lock) { // We only need to lock if we're in concurrent mode pthread_mutex_lock(&vm->alloc_lock); } }
void idris_requireAlloc(size_t size) { #ifdef HAS_PTHREAD VM* vm = pthread_getspecific(vm_key); #else VM* vm = global_vm; #endif if (!(vm->heap.next + size < vm->heap.end)) { idris_gc(vm); } #ifdef HAS_PTHREAD int lock = vm->processes > 0; if (lock) { // We only need to lock if we're in concurrent mode pthread_mutex_lock(&vm->alloc_lock); } #endif }
void idris_forceGC(void* vm) { idris_gc((VM*)vm); }