Bug 1542279 - Guard against overflow when calculating the new max chunks r=jonco

Differential Revision: https://phabricator.services.mozilla.com/D26462

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Paul Bone 2019-04-09 10:00:11 +00:00
Родитель 4c4dd32808
Коммит 27a061fdce
2 изменённых файлов: 13 добавлений и 2 удалений

Просмотреть файл

@ -1238,8 +1238,16 @@ bool js::Nursery::maybeResizeExact(JS::GCReason reason) {
}
#endif
unsigned newMaxNurseryChunks =
JS_ROUND(tunables().gcMaxNurseryBytes(), ChunkSize) / ChunkSize;
CheckedInt<unsigned> newMaxNurseryChunksChecked =
(JS_ROUND(CheckedInt<size_t>(tunables().gcMaxNurseryBytes()), ChunkSize) /
ChunkSize)
.toChecked<unsigned>();
if (!newMaxNurseryChunksChecked.isValid()) {
// The above calculation probably overflowed (I don't think it can
// underflow).
newMaxNurseryChunksChecked = 1;
}
unsigned newMaxNurseryChunks = newMaxNurseryChunksChecked.value();
MOZ_ASSERT(newMaxNurseryChunks > 0);
if (newMaxNurseryChunks != chunkCountLimit_) {
chunkCountLimit_ = newMaxNurseryChunks;

Просмотреть файл

@ -0,0 +1,3 @@
gcparam('maxNurseryBytes', 2 ** 32 - 1);