summaryrefslogtreecommitdiff
path: root/core/shared_queue.js
diff options
context:
space:
mode:
authorBert Belder <bertbelder@gmail.com>2019-03-15 20:49:41 +0100
committerBert Belder <bertbelder@gmail.com>2019-03-15 21:57:22 +0100
commit62761a4e3a12e123d32c7d78a06f6565118d63b4 (patch)
treef7684602b22da9ffe461ec9ece9169098b258afe /core/shared_queue.js
parentbb642e8c7c9f8ab16540d2e3b1ef6a5543ded91e (diff)
core: remove reset() from SharedQueue API
Diffstat (limited to 'core/shared_queue.js')
-rw-r--r--core/shared_queue.js24
1 files changed, 16 insertions, 8 deletions
diff --git a/core/shared_queue.js b/core/shared_queue.js
index 36f5dc91b..756f86e72 100644
--- a/core/shared_queue.js
+++ b/core/shared_queue.js
@@ -22,7 +22,8 @@
}
function reset() {
- shared32.fill(0, 0, INDEX_RECORDS);
+ shared32[INDEX_NUM_RECORDS] = 0;
+ shared32[INDEX_NUM_SHIFTED_OFF] = 0;
shared32[INDEX_HEAD] = HEAD_INIT;
}
@@ -34,6 +35,10 @@
return shared32[INDEX_NUM_RECORDS];
}
+ function size() {
+ return shared32[INDEX_NUM_RECORDS] - shared32[INDEX_NUM_SHIFTED_OFF];
+ }
+
function setEnd(index, end) {
shared32[INDEX_OFFSETS + index] = end;
}
@@ -77,17 +82,21 @@
/// Returns null if empty.
function shift() {
let i = shared32[INDEX_NUM_SHIFTED_OFF];
- if (i >= numRecords()) {
+ if (size() == 0) {
+ assert(i == 0);
return null;
}
+
let off = getOffset(i);
let end = getEnd(i);
- shared32[INDEX_NUM_SHIFTED_OFF] += 1;
- return sharedBytes.subarray(off, end);
- }
- function size() {
- return shared32[INDEX_NUM_RECORDS] - shared32[INDEX_NUM_SHIFTED_OFF];
+ if (size() > 1) {
+ shared32[INDEX_NUM_SHIFTED_OFF] += 1;
+ } else {
+ reset();
+ }
+
+ return sharedBytes.subarray(off, end);
}
let asyncHandler = null;
@@ -119,7 +128,6 @@
numRecords,
size,
push,
- reset,
shift
};