OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_REGEXP_JSREGEXP_H_ | 5 #ifndef V8_REGEXP_JSREGEXP_H_ |
6 #define V8_REGEXP_JSREGEXP_H_ | 6 #define V8_REGEXP_JSREGEXP_H_ |
7 | 7 |
8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
9 #include "src/assembler.h" | 9 #include "src/assembler.h" |
10 #include "src/regexp/regexp-ast.h" | 10 #include "src/regexp/regexp-ast.h" |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 static Handle<JSArray> SetLastMatchInfo(Handle<JSArray> last_match_info, | 115 static Handle<JSArray> SetLastMatchInfo(Handle<JSArray> last_match_info, |
116 Handle<String> subject, | 116 Handle<String> subject, |
117 int capture_count, | 117 int capture_count, |
118 int32_t* match); | 118 int32_t* match); |
119 | 119 |
120 | 120 |
121 class GlobalCache { | 121 class GlobalCache { |
122 public: | 122 public: |
123 GlobalCache(Handle<JSRegExp> regexp, | 123 GlobalCache(Handle<JSRegExp> regexp, |
124 Handle<String> subject, | 124 Handle<String> subject, |
125 bool is_global, | |
126 Isolate* isolate); | 125 Isolate* isolate); |
127 | 126 |
128 INLINE(~GlobalCache()); | 127 INLINE(~GlobalCache()); |
129 | 128 |
130 // Fetch the next entry in the cache for global regexp match results. | 129 // Fetch the next entry in the cache for global regexp match results. |
131 // This does not set the last match info. Upon failure, NULL is returned. | 130 // This does not set the last match info. Upon failure, NULL is returned. |
132 // The cause can be checked with Result(). The previous | 131 // The cause can be checked with Result(). The previous |
133 // result is still in available in memory when a failure happens. | 132 // result is still in available in memory when a failure happens. |
134 INLINE(int32_t* FetchNext()); | 133 INLINE(int32_t* FetchNext()); |
135 | 134 |
136 INLINE(int32_t* LastSuccessfulMatch()); | 135 INLINE(int32_t* LastSuccessfulMatch()); |
137 | 136 |
138 INLINE(bool HasException()) { return num_matches_ < 0; } | 137 INLINE(bool HasException()) { return num_matches_ < 0; } |
139 | 138 |
140 private: | 139 private: |
| 140 int AdvanceZeroLength(int last_index); |
| 141 |
141 int num_matches_; | 142 int num_matches_; |
142 int max_matches_; | 143 int max_matches_; |
143 int current_match_index_; | 144 int current_match_index_; |
144 int registers_per_match_; | 145 int registers_per_match_; |
145 // Pointer to the last set of captures. | 146 // Pointer to the last set of captures. |
146 int32_t* register_array_; | 147 int32_t* register_array_; |
147 int register_array_size_; | 148 int register_array_size_; |
148 Handle<JSRegExp> regexp_; | 149 Handle<JSRegExp> regexp_; |
149 Handle<String> subject_; | 150 Handle<String> subject_; |
150 }; | 151 }; |
(...skipping 1429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1580 static const int kStringOffset = 0; | 1581 static const int kStringOffset = 0; |
1581 static const int kPatternOffset = 1; | 1582 static const int kPatternOffset = 1; |
1582 static const int kArrayOffset = 2; | 1583 static const int kArrayOffset = 2; |
1583 static const int kLastMatchOffset = 3; | 1584 static const int kLastMatchOffset = 3; |
1584 }; | 1585 }; |
1585 | 1586 |
1586 } // namespace internal | 1587 } // namespace internal |
1587 } // namespace v8 | 1588 } // namespace v8 |
1588 | 1589 |
1589 #endif // V8_REGEXP_JSREGEXP_H_ | 1590 #endif // V8_REGEXP_JSREGEXP_H_ |
OLD | NEW |