File tree Expand file tree Collapse file tree 3 files changed +23
-6
lines changed
Expand file tree Collapse file tree 3 files changed +23
-6
lines changed Original file line number Diff line number Diff line change @@ -6,6 +6,13 @@ function init(list) {
66}
77exports.init = init;
88
9+ // create a new linked list
10+ function create() {
11+ var list = { _idleNext: null, _idlePrev: null };
12+ init(list);
13+ return list;
14+ }
15+ exports.create = create;
916
1017// show the most idle item
1118function peek(list) {
@@ -42,10 +49,17 @@ exports.remove = remove;
4249
4350// remove a item from its list and place at the end.
4451function append(list, item) {
45- remove(item);
52+ if (item._idleNext || item._idlePrev) {
53+ remove(item);
54+ }
55+
56+ // items are linked with _idleNext -> (older) and _idlePrev -> (newer)
57+ // TODO: swap the linkage to match the intuitive older items at "prev"
4658 item._idleNext = list._idleNext;
47- list._idleNext._idlePrev = item;
4859 item._idlePrev = list;
60+
61+ // the list _idleNext points to tail (newest) and _idlePrev to head (oldest)
62+ list._idleNext._idlePrev = item;
4963 list._idleNext = item;
5064}
5165exports.append = append;
Original file line number Diff line number Diff line change @@ -502,16 +502,14 @@ Timeout.prototype.close = function() {
502502};
503503
504504
505- var immediateQueue = {};
506- L.init(immediateQueue);
505+ var immediateQueue = L.create();
507506
508507
509508function processImmediate() {
510509 var queue = immediateQueue;
511510 var domain, immediate;
512511
513- immediateQueue = {};
514- L.init(immediateQueue);
512+ immediateQueue = L.create();
515513
516514 while (L.isEmpty(queue) === false) {
517515 immediate = L.shift(queue);
Original file line number Diff line number Diff line change @@ -103,3 +103,8 @@ assert.equal(C, L.shift(list));
103103// list
104104assert.ok(L.isEmpty(list));
105105
106+ var list2 = L.create();
107+ var list3 = L.create();
108+ assert.ok(L.isEmpty(list2));
109+ assert.ok(L.isEmpty(list3));
110+ assert.ok(list2 != list3);
You can’t perform that action at this time.
0 commit comments