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

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

Issue 2960413002: Omit JIT compiler from precompiled runtime on ARM, ARM64 and IA32. (Closed)
Patch Set: Moved trace_irregexp flag to flag_list.h Created 3 years, 5 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
« no previous file with comments | « runtime/vm/regexp_parser.h ('k') | runtime/vm/runtime_entry.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 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 has_more_(true), 209 has_more_(true),
210 multiline_(multiline), 210 multiline_(multiline),
211 simple_(false), 211 simple_(false),
212 contains_anchor_(false), 212 contains_anchor_(false),
213 is_scanned_for_captures_(false), 213 is_scanned_for_captures_(false),
214 failed_(false) { 214 failed_(false) {
215 Advance(); 215 Advance();
216 } 216 }
217 217
218 218
219 bool RegExpParser::ParseFunction(ParsedFunction* parsed_function) {
220 VMTagScope tagScope(parsed_function->thread(),
221 VMTag::kCompileParseRegExpTagId);
222 Zone* zone = parsed_function->zone();
223 RegExp& regexp = RegExp::Handle(parsed_function->function().regexp());
224
225 const String& pattern = String::Handle(regexp.pattern());
226 const bool multiline = regexp.is_multi_line();
227
228 RegExpCompileData* compile_data = new (zone) RegExpCompileData();
229 if (!RegExpParser::ParseRegExp(pattern, multiline, compile_data)) {
230 // Parsing failures are handled in the RegExp factory constructor.
231 UNREACHABLE();
232 }
233
234 regexp.set_num_bracket_expressions(compile_data->capture_count);
235 if (compile_data->simple) {
236 regexp.set_is_simple();
237 } else {
238 regexp.set_is_complex();
239 }
240
241 parsed_function->SetRegExpCompileData(compile_data);
242
243 return true;
244 }
245
246
247 uint32_t RegExpParser::Next() { 219 uint32_t RegExpParser::Next() {
248 if (has_next()) { 220 if (has_next()) {
249 return in().CharAt(next_pos_); 221 return in().CharAt(next_pos_);
250 } else { 222 } else {
251 return kEndMarker; 223 return kEndMarker;
252 } 224 }
253 } 225 }
254 226
255 227
256 void RegExpParser::Advance() { 228 void RegExpParser::Advance() {
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after
1095 String::Handle(String::Concat(result->error, input)); 1067 String::Handle(String::Concat(result->error, input));
1096 const Array& args = Array::Handle(Array::New(1)); 1068 const Array& args = Array::Handle(Array::New(1));
1097 args.SetAt(0, message); 1069 args.SetAt(0, message);
1098 1070
1099 Exceptions::ThrowByType(Exceptions::kFormat, args); 1071 Exceptions::ThrowByType(Exceptions::kFormat, args);
1100 } 1072 }
1101 return !parser.failed(); 1073 return !parser.failed();
1102 } 1074 }
1103 1075
1104 } // namespace dart 1076 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/regexp_parser.h ('k') | runtime/vm/runtime_entry.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698