Add bounds check when iterating over bytecode jump table

Bytecode jump table for switch statements can have holes when
the corresponding case statements do not exist (either because
the case was missing or was eliminated because it was dead code).
The iterator deals with this by skipping over the holes and setting
the iterator to the next valid entry. Bounds check was missing during
this skipping over if the last element is a hole.

Bug: chromium:794825
Change-Id: Ifdb63257e2997d2fd2868467a56da72b68feb47e
Reviewed-on: https://chromium-review.googlesource.com/829774
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50137}
This commit is contained in:
Mythri 2017-12-15 16:17:13 +00:00 committed by Commit Bot
parent 958b78a795
commit e9770dfeb8

View File

@ -297,6 +297,7 @@ void JumpTableTargetOffsets::iterator::UpdateAndAdvanceToValid() {
while (current_->IsTheHole(isolate)) {
++table_offset_;
++index_;
if (table_offset_ >= table_end_) break;
current_ = accessor_->GetConstantAtIndex(table_offset_);
}
}