| Index: src/compiler/node-aux-data.h
|
| diff --git a/src/compiler/node-aux-data.h b/src/compiler/node-aux-data.h
|
| index 6c236aa4da75d8be538cd2bdd980e4d4c060f6a4..7a882921a71db37cc2727683a501dfe448e9365a 100644
|
| --- a/src/compiler/node-aux-data.h
|
| +++ b/src/compiler/node-aux-data.h
|
| @@ -31,10 +31,61 @@ class NodeAuxData {
|
| return (id < aux_data_.size()) ? aux_data_[id] : T();
|
| }
|
|
|
| + class const_iterator;
|
| + friend class const_iterator;
|
| +
|
| + const_iterator begin() const;
|
| + const_iterator end() const;
|
| +
|
| private:
|
| ZoneVector<T> aux_data_;
|
| };
|
|
|
| +
|
| +template <class T>
|
| +class NodeAuxData<T>::const_iterator {
|
| + public:
|
| + typedef std::forward_iterator_tag iterator_category;
|
| + typedef int difference_type;
|
| + typedef std::pair<size_t, T> value_type;
|
| + typedef value_type* pointer;
|
| + typedef value_type& reference;
|
| +
|
| + const_iterator(const ZoneVector<T>* data, size_t current)
|
| + : data_(data), current_(current) {}
|
| + const_iterator(const const_iterator& other)
|
| + : data_(other.data_), current_(other.current_) {}
|
| +
|
| + value_type operator*() const {
|
| + return std::make_pair(current_, (*data_)[current_]);
|
| + }
|
| + bool operator==(const const_iterator& other) const {
|
| + return current_ == other.current_ && data_ == other.data_;
|
| + }
|
| + bool operator!=(const const_iterator& other) const {
|
| + return !(*this == other);
|
| + }
|
| + const_iterator& operator++() {
|
| + ++current_;
|
| + return *this;
|
| + }
|
| + const_iterator operator++(int);
|
| +
|
| + private:
|
| + const ZoneVector<T>* data_;
|
| + size_t current_;
|
| +};
|
| +
|
| +template <class T>
|
| +typename NodeAuxData<T>::const_iterator NodeAuxData<T>::begin() const {
|
| + return typename NodeAuxData<T>::const_iterator(&aux_data_, 0);
|
| +}
|
| +
|
| +template <class T>
|
| +typename NodeAuxData<T>::const_iterator NodeAuxData<T>::end() const {
|
| + return typename NodeAuxData<T>::const_iterator(&aux_data_, aux_data_.size());
|
| +}
|
| +
|
| } // namespace compiler
|
| } // namespace internal
|
| } // namespace v8
|
|
|