diff options
author | Bert Belder <bertbelder@gmail.com> | 2019-03-15 20:49:41 +0100 |
---|---|---|
committer | Bert Belder <bertbelder@gmail.com> | 2019-03-15 21:57:22 +0100 |
commit | 62761a4e3a12e123d32c7d78a06f6565118d63b4 (patch) | |
tree | f7684602b22da9ffe461ec9ece9169098b258afe /core/shared_queue.js | |
parent | bb642e8c7c9f8ab16540d2e3b1ef6a5543ded91e (diff) |
core: remove reset() from SharedQueue API
Diffstat (limited to 'core/shared_queue.js')
-rw-r--r-- | core/shared_queue.js | 24 |
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 }; |