#include "src/interpreter/bytecode-array-random-iterator.h"
#include "src/objects/objects-inl.h"
namespace v8 {
namespace internal {
namespace interpreter {
BytecodeArrayRandomIterator::BytecodeArrayRandomIterator(
Handle<BytecodeArray> bytecode_array, Zone* zone)
: BytecodeArrayIterator(bytecode_array, 0), offsets_(zone) {
offsets_.reserve(bytecode_array->length() / 2);
Initialize();
}
void BytecodeArrayRandomIterator::Initialize() {
while (!done()) {
offsets_.push_back(current_offset());
Advance();
}
GoToStart();
}
bool BytecodeArrayRandomIterator::IsValid() const {
return current_index_ >= 0 &&
static_cast<size_t>(current_index_) < offsets_.size();
}
void BytecodeArrayRandomIterator::UpdateOffsetFromIndex() {
if (IsValid()) {
SetOffsetUnchecked(offsets_[current_index_]);
}
}
}
}
}