diff options
author | Andras <andras@kinvey.com> | 2016-04-26 10:33:19 -0400 |
---|---|---|
committer | Jeremiah Senkpiel <fishrock123@rocketmail.com> | 2016-06-29 11:02:25 +0200 |
commit | 6b0f86a8d519fd0780d2f6db2e7f28c2715dd795 (patch) | |
tree | b04f62fee29ec562fe534b6942faa0dfed9e0bd4 /lib/internal/linkedlist.js | |
parent | f8d3f6fbf4b0471677a0e4becf458a186fb2e4de (diff) | |
download | android-node-v8-6b0f86a8d519fd0780d2f6db2e7f28c2715dd795.tar.gz android-node-v8-6b0f86a8d519fd0780d2f6db2e7f28c2715dd795.tar.bz2 android-node-v8-6b0f86a8d519fd0780d2f6db2e7f28c2715dd795.zip |
timers: optimize linkedlist
Now uses a new L.create() factory to create access-optimized linkedlist
objects.
PR-URL: https://github.com/nodejs/node/pull/6436
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'lib/internal/linkedlist.js')
-rw-r--r-- | lib/internal/linkedlist.js | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/internal/linkedlist.js b/lib/internal/linkedlist.js index 02186cfedc..33ada550ef 100644 --- a/lib/internal/linkedlist.js +++ b/lib/internal/linkedlist.js @@ -6,6 +6,13 @@ function init(list) { } exports.init = init; +// create a new linked list +function create() { + var list = { _idleNext: null, _idlePrev: null }; + init(list); + return list; +} +exports.create = create; // show the most idle item function peek(list) { @@ -42,10 +49,17 @@ exports.remove = remove; // remove a item from its list and place at the end. function append(list, item) { - remove(item); + if (item._idleNext || item._idlePrev) { + remove(item); + } + + // items are linked with _idleNext -> (older) and _idlePrev -> (newer) + // TODO: swap the linkage to match the intuitive older items at "prev" item._idleNext = list._idleNext; - list._idleNext._idlePrev = item; item._idlePrev = list; + + // the list _idleNext points to tail (newest) and _idlePrev to head (oldest) + list._idleNext._idlePrev = item; list._idleNext = item; } exports.append = append; |