44 lines
905 B
JavaScript
44 lines
905 B
JavaScript
|
/*TRANSPILED*/goog.loadModule(function(exports) {'use strict';/*
|
||
|
|
||
|
Copyright The Closure Library Authors.
|
||
|
SPDX-License-Identifier: Apache-2.0
|
||
|
*/
|
||
|
'use strict';
|
||
|
goog.module("goog.async.FreeList");
|
||
|
goog.module.declareLegacyNamespace();
|
||
|
class FreeList {
|
||
|
constructor(create, reset, limit) {
|
||
|
this.limit_ = limit;
|
||
|
this.create_ = create;
|
||
|
this.reset_ = reset;
|
||
|
this.occupants_ = 0;
|
||
|
this.head_ = null;
|
||
|
}
|
||
|
get() {
|
||
|
let item;
|
||
|
if (this.occupants_ > 0) {
|
||
|
this.occupants_--;
|
||
|
item = this.head_;
|
||
|
this.head_ = item.next;
|
||
|
item.next = null;
|
||
|
} else {
|
||
|
item = this.create_();
|
||
|
}
|
||
|
return item;
|
||
|
}
|
||
|
put(item) {
|
||
|
this.reset_(item);
|
||
|
if (this.occupants_ < this.limit_) {
|
||
|
this.occupants_++;
|
||
|
item.next = this.head_;
|
||
|
this.head_ = item;
|
||
|
}
|
||
|
}
|
||
|
occupants() {
|
||
|
return this.occupants_;
|
||
|
}
|
||
|
}
|
||
|
exports = FreeList;
|
||
|
|
||
|
;return exports;});
|