Skip to content

Commit e8f8acb

Browse files
committed
Micro-optimize memfs readdir. NFC
1 parent 5122e40 commit e8f8acb

19 files changed

+27
-33
lines changed

src/library_memfs.js

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ addToLibrary({
7676
if (FS.isDir(node.mode)) {
7777
node.node_ops = MEMFS.ops_table.dir.node;
7878
node.stream_ops = MEMFS.ops_table.dir.stream;
79-
node.contents = {};
79+
node.contents = new Map();
8080
} else if (FS.isFile(node.mode)) {
8181
node.node_ops = MEMFS.ops_table.file.node;
8282
node.stream_ops = MEMFS.ops_table.file.stream;
@@ -95,7 +95,7 @@ addToLibrary({
9595
node.atime = node.mtime = node.ctime = Date.now();
9696
// add the new node to the parent
9797
if (parent) {
98-
parent.contents[name] = node;
98+
parent.contents.set(name, node);
9999
parent.atime = parent.mtime = parent.ctime = node.atime;
100100
}
101101
return node;
@@ -198,36 +198,30 @@ addToLibrary({
198198
new_node = FS.lookupNode(new_dir, new_name);
199199
} catch (e) {
200200
}
201-
if (new_node) {
202-
for (var i in new_node.contents) {
203-
throw new FS.ErrnoError({{{ cDefs.ENOTEMPTY }}});
204-
}
201+
if (new_node && new_node.contents.size) {
202+
throw new FS.ErrnoError({{{ cDefs.ENOTEMPTY }}});
205203
}
206204
}
207205
// do the internal rewiring
208-
delete old_node.parent.contents[old_node.name];
209-
new_dir.contents[new_name] = old_node;
206+
old_node.parent.contents.delete(old_node.name);
207+
new_dir.contents.set(new_name, old_node);
210208
old_node.name = new_name;
211209
new_dir.ctime = new_dir.mtime = old_node.parent.ctime = old_node.parent.mtime = Date.now();
212210
},
213211
unlink(parent, name) {
214-
delete parent.contents[name];
212+
parent.contents.delete(name);
215213
parent.ctime = parent.mtime = Date.now();
216214
},
217215
rmdir(parent, name) {
218216
var node = FS.lookupNode(parent, name);
219-
for (var i in node.contents) {
217+
if (node.contents.size) {
220218
throw new FS.ErrnoError({{{ cDefs.ENOTEMPTY }}});
221219
}
222220
delete parent.contents[name];
223221
parent.ctime = parent.mtime = Date.now();
224222
},
225223
readdir(node) {
226-
var entries = ['.', '..'];
227-
for (var key of Object.keys(node.contents)) {
228-
entries.push(key);
229-
}
230-
return entries;
224+
return ['.', '..', ...node.contents.keys()];
231225
},
232226
symlink(parent, newname, oldpath) {
233227
var node = MEMFS.createNode(parent, newname, 0o777 | {{{ cDefs.S_IFLNK }}}, 0);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8484
1+
8473
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20746
1+
20708
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8467
1+
8457
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20714
1+
20676
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9507
1+
9494
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
24589
1+
24551
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8449
1+
8442
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20640
1+
20602
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8449
1+
8442

0 commit comments

Comments
 (0)