repo_description: Node.js JavaScript runtime ✨🐢🚀✨
repo_topics: javascript js linux macos mit node nodejs runtime windows
code: '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;
  