From 62761a4e3a12e123d32c7d78a06f6565118d63b4 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Fri, 15 Mar 2019 20:49:41 +0100 Subject: core: remove reset() from SharedQueue API --- core/shared_queue.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'core/shared_queue.js') 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 }; -- cgit v1.2.3