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 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/api.h" | 7 #include "src/api.h" |
8 #include "src/ast.h" | 8 #include "src/ast.h" |
9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
10 #include "src/base/platform/platform.h" | 10 #include "src/base/platform/platform.h" |
(...skipping 4305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4316 if (check.HasOverflowed()) { | 4316 if (check.HasOverflowed()) { |
4317 ReportError(CStrVector(Isolate::kStackOverflowMessage)); | 4317 ReportError(CStrVector(Isolate::kStackOverflowMessage)); |
4318 } else if (zone()->excess_allocation()) { | 4318 } else if (zone()->excess_allocation()) { |
4319 ReportError(CStrVector("Regular expression too large")); | 4319 ReportError(CStrVector("Regular expression too large")); |
4320 } else { | 4320 } else { |
4321 current_ = in()->Get(next_pos_); | 4321 current_ = in()->Get(next_pos_); |
4322 next_pos_++; | 4322 next_pos_++; |
4323 } | 4323 } |
4324 } else { | 4324 } else { |
4325 current_ = kEndMarker; | 4325 current_ = kEndMarker; |
| 4326 // Advance so that position() points to 1-after-the-last-character. This is |
| 4327 // important so that Reset() to this position works correctly. |
| 4328 next_pos_ = in()->length() + 1; |
4326 has_more_ = false; | 4329 has_more_ = false; |
4327 } | 4330 } |
4328 } | 4331 } |
4329 | 4332 |
4330 | 4333 |
4331 void RegExpParser::Reset(int pos) { | 4334 void RegExpParser::Reset(int pos) { |
4332 next_pos_ = pos; | 4335 next_pos_ = pos; |
4333 has_more_ = (pos < in()->length()); | 4336 has_more_ = (pos < in()->length()); |
4334 Advance(); | 4337 Advance(); |
4335 } | 4338 } |
(...skipping 955 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5291 } else { | 5294 } else { |
5292 const uc16* data = reinterpret_cast<const uc16*>(raw_string->raw_data()); | 5295 const uc16* data = reinterpret_cast<const uc16*>(raw_string->raw_data()); |
5293 running_hash = StringHasher::ComputeRunningHash(running_hash, data, | 5296 running_hash = StringHasher::ComputeRunningHash(running_hash, data, |
5294 raw_string->length()); | 5297 raw_string->length()); |
5295 } | 5298 } |
5296 } | 5299 } |
5297 | 5300 |
5298 return running_hash; | 5301 return running_hash; |
5299 } | 5302 } |
5300 } } // namespace v8::internal | 5303 } } // namespace v8::internal |
OLD | NEW |