Skip to content

Commit 66c215c

Browse files
committedSep 30, 2024
Exposed also a clear method to allow remote drivers to free the whole heap when needed
1 parent 96b2d75 commit 66c215c

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed
 

‎esm/heap.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ export const create = () => {
55
const values = new Map;
66
let uid = 0;
77
return {
8+
/**
9+
* Clear all references retained in the current heap.
10+
*/
11+
clear: () => {
12+
ids.clear();
13+
values.clear();
14+
},
15+
816
/**
917
* Remove by id or value any previously stored reference.
1018
* @param {number | unknown} id the held value by id or the value itself.
@@ -48,5 +56,5 @@ export const create = () => {
4856
};
4957

5058
// globally shared heap
51-
const { drop, get, hold } = create();
52-
export { drop, get, hold };
59+
const { clear, drop, get, hold } = create();
60+
export { clear, drop, get, hold };

‎test/heap.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { drop, get, hold } from '../esm/heap.js';
1+
import { clear, drop, get, hold } from '../esm/heap.js';
22
import { assert, collect } from './utils.js';
33

44
let o = {};
@@ -25,3 +25,7 @@ assert(id !== hold(o), true);
2525
assert(drop(o), true);
2626
assert(drop(o), false);
2727
assert(drop(id), false);
28+
29+
hold(o);
30+
clear();
31+
assert(drop(o), false);

0 commit comments

Comments
 (0)
Please sign in to comment.