Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(674)

Side by Side Diff: runtime/vm/regexp_parser.cc

Issue 1043943002: A few fixes for ARMv5TE. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/os_linux.cc ('k') | runtime/vm/simulator_arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/longjump.h" 5 #include "vm/longjump.h"
6 #include "vm/object_store.h" 6 #include "vm/object_store.h"
7 #include "vm/regexp_parser.h" 7 #include "vm/regexp_parser.h"
8 8
9 namespace dart { 9 namespace dart {
10 10
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 // In order to know whether an escape is a backreference or not we have to scan 666 // In order to know whether an escape is a backreference or not we have to scan
667 // the entire regexp and find the number of capturing parentheses. However we 667 // the entire regexp and find the number of capturing parentheses. However we
668 // don't want to scan the regexp twice unless it is necessary. This mini-parser 668 // don't want to scan the regexp twice unless it is necessary. This mini-parser
669 // is called when needed. It can see the difference between capturing and 669 // is called when needed. It can see the difference between capturing and
670 // noncapturing parentheses and can skip character classes and backslash-escaped 670 // noncapturing parentheses and can skip character classes and backslash-escaped
671 // characters. 671 // characters.
672 void RegExpParser::ScanForCaptures() { 672 void RegExpParser::ScanForCaptures() {
673 // Start with captures started previous to current position 673 // Start with captures started previous to current position
674 intptr_t capture_count = captures_started(); 674 intptr_t capture_count = captures_started();
675 // Add count of captures after this position. 675 // Add count of captures after this position.
676 intptr_t n; 676 uintptr_t n;
677 while ((n = current()) != kEndMarker) { 677 while ((n = current()) != kEndMarker) {
678 Advance(); 678 Advance();
679 switch (n) { 679 switch (n) {
680 case '\\': 680 case '\\':
681 Advance(); 681 Advance();
682 break; 682 break;
683 case '[': { 683 case '[': {
684 intptr_t c; 684 uintptr_t c;
685 while ((c = current()) != kEndMarker) { 685 while ((c = current()) != kEndMarker) {
686 Advance(); 686 Advance();
687 if (c == '\\') { 687 if (c == '\\') {
688 Advance(); 688 Advance();
689 } else { 689 } else {
690 if (c == ']') break; 690 if (c == ']') break;
691 } 691 }
692 } 692 }
693 break; 693 break;
694 } 694 }
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 String::Concat(result->error, input)); 1069 String::Concat(result->error, input));
1070 const Array& args = Array::Handle(Array::New(1)); 1070 const Array& args = Array::Handle(Array::New(1));
1071 args.SetAt(0, message); 1071 args.SetAt(0, message);
1072 1072
1073 Exceptions::ThrowByType(Exceptions::kFormat, args); 1073 Exceptions::ThrowByType(Exceptions::kFormat, args);
1074 } 1074 }
1075 return !parser.failed(); 1075 return !parser.failed();
1076 } 1076 }
1077 1077
1078 } // namespace dart 1078 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/os_linux.cc ('k') | runtime/vm/simulator_arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698