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: src/jsregexp.cc

Issue 788043005: ES6 unicode escapes, part 2: Regexps. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: mirror regexp test Created 5 years, 11 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
OLDNEW
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/ast.h" 7 #include "src/ast.h"
8 #include "src/base/platform/platform.h" 8 #include "src/base/platform/platform.h"
9 #include "src/compilation-cache.h" 9 #include "src/compilation-cache.h"
10 #include "src/compiler.h" 10 #include "src/compiler.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 Handle<Object> result; 147 Handle<Object> result;
148 if (in_cache) { 148 if (in_cache) {
149 re->set_data(*cached); 149 re->set_data(*cached);
150 return re; 150 return re;
151 } 151 }
152 pattern = String::Flatten(pattern); 152 pattern = String::Flatten(pattern);
153 PostponeInterruptsScope postpone(isolate); 153 PostponeInterruptsScope postpone(isolate);
154 RegExpCompileData parse_result; 154 RegExpCompileData parse_result;
155 FlatStringReader reader(isolate, pattern); 155 FlatStringReader reader(isolate, pattern);
156 if (!RegExpParser::ParseRegExp(&reader, flags.is_multiline(), 156 if (!RegExpParser::ParseRegExp(&reader, flags.is_multiline(),
157 &parse_result, &zone)) { 157 flags.is_unicode(), &parse_result, &zone)) {
158 // Throw an exception if we fail to parse the pattern. 158 // Throw an exception if we fail to parse the pattern.
159 return ThrowRegExpException(re, 159 return ThrowRegExpException(re,
160 pattern, 160 pattern,
161 parse_result.error, 161 parse_result.error,
162 "malformed_regexp"); 162 "malformed_regexp");
163 } 163 }
164 164
165 bool has_been_compiled = false; 165 bool has_been_compiled = false;
166 166
167 if (parse_result.simple && 167 if (parse_result.simple &&
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 return false; 394 return false;
395 } 395 }
396 396
397 JSRegExp::Flags flags = re->GetFlags(); 397 JSRegExp::Flags flags = re->GetFlags();
398 398
399 Handle<String> pattern(re->Pattern()); 399 Handle<String> pattern(re->Pattern());
400 pattern = String::Flatten(pattern); 400 pattern = String::Flatten(pattern);
401 RegExpCompileData compile_data; 401 RegExpCompileData compile_data;
402 FlatStringReader reader(isolate, pattern); 402 FlatStringReader reader(isolate, pattern);
403 if (!RegExpParser::ParseRegExp(&reader, flags.is_multiline(), 403 if (!RegExpParser::ParseRegExp(&reader, flags.is_multiline(),
404 &compile_data, 404 flags.is_unicode(), &compile_data, &zone)) {
405 &zone)) {
406 // Throw an exception if we fail to parse the pattern. 405 // Throw an exception if we fail to parse the pattern.
407 // THIS SHOULD NOT HAPPEN. We already pre-parsed it successfully once. 406 // THIS SHOULD NOT HAPPEN. We already pre-parsed it successfully once.
408 USE(ThrowRegExpException(re, 407 USE(ThrowRegExpException(re,
409 pattern, 408 pattern,
410 compile_data.error, 409 compile_data.error,
411 "malformed_regexp")); 410 "malformed_regexp"));
412 return false; 411 return false;
413 } 412 }
414 RegExpEngine::CompilationResult result = RegExpEngine::Compile( 413 RegExpEngine::CompilationResult result = RegExpEngine::Compile(
415 &compile_data, flags.is_ignore_case(), flags.is_global(), 414 &compile_data, flags.is_ignore_case(), flags.is_global(),
(...skipping 5727 matching lines...) Expand 10 before | Expand all | Expand 10 after
6143 Heap* heap = pattern->GetHeap(); 6142 Heap* heap = pattern->GetHeap();
6144 bool too_much = pattern->length() > RegExpImpl::kRegExpTooLargeToOptimize; 6143 bool too_much = pattern->length() > RegExpImpl::kRegExpTooLargeToOptimize;
6145 if (heap->total_regexp_code_generated() > RegExpImpl::kRegExpCompiledLimit && 6144 if (heap->total_regexp_code_generated() > RegExpImpl::kRegExpCompiledLimit &&
6146 heap->isolate()->memory_allocator()->SizeExecutable() > 6145 heap->isolate()->memory_allocator()->SizeExecutable() >
6147 RegExpImpl::kRegExpExecutableMemoryLimit) { 6146 RegExpImpl::kRegExpExecutableMemoryLimit) {
6148 too_much = true; 6147 too_much = true;
6149 } 6148 }
6150 return too_much; 6149 return too_much;
6151 } 6150 }
6152 }} // namespace v8::internal 6151 }} // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698