'use strict'; const { ReflectApply, } = primordials; class FreeList { constructor(name, max, ctor) { this.name = name; this.ctor = ctor; this.max = max; this.list = []; } alloc() { return this.list.length > 0 ? this.list.pop() : ReflectApply(this.ctor, this, arguments); } free(obj) { if (this.list.length < this.max) { this.list.push(obj); return true; } return false; } } module.exports = FreeList;