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

Side by Side Diff: src/regexp/regexp-macro-assembler-tracer.cc

Issue 1418963009: Experimental support for RegExp lookbehind. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix arm64 debug code assertion Created 5 years, 1 month 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 | « src/regexp/regexp-macro-assembler-tracer.h ('k') | src/regexp/x64/regexp-macro-assembler-x64.h » ('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 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/regexp/regexp-macro-assembler-tracer.h" 5 #include "src/regexp/regexp-macro-assembler-tracer.h"
6 6
7 #include "src/ast.h" 7 #include "src/ast.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
11 11
12 RegExpMacroAssemblerTracer::RegExpMacroAssemblerTracer( 12 RegExpMacroAssemblerTracer::RegExpMacroAssemblerTracer(
13 Isolate* isolate, RegExpMacroAssembler* assembler) 13 Isolate* isolate, RegExpMacroAssembler* assembler)
14 : RegExpMacroAssembler(isolate, assembler->zone()), assembler_(assembler) { 14 : RegExpMacroAssembler(isolate, assembler->zone()), assembler_(assembler) {
15 unsigned int type = assembler->Implementation(); 15 unsigned int type = assembler->Implementation();
16 DCHECK(type < 6); 16 DCHECK(type < 8);
17 const char* impl_names[] = {"IA32", "ARM", "ARM64", 17 const char* impl_names[] = {"IA32", "ARM", "ARM64", "MIPS",
18 "MIPS", "X64", "X87", "Bytecode"}; 18 "PPC", "X64", "X87", "Bytecode"};
19 PrintF("RegExpMacroAssembler%s();\n", impl_names[type]); 19 PrintF("RegExpMacroAssembler%s();\n", impl_names[type]);
20 } 20 }
21 21
22 22
23 RegExpMacroAssemblerTracer::~RegExpMacroAssemblerTracer() { 23 RegExpMacroAssemblerTracer::~RegExpMacroAssemblerTracer() {
24 } 24 }
25 25
26 26
27 void RegExpMacroAssemblerTracer::AbortedCodeGeneration() { 27 void RegExpMacroAssemblerTracer::AbortedCodeGeneration() {
28 PrintF(" AbortedCodeGeneration\n"); 28 PrintF(" AbortedCodeGeneration\n");
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 assembler_->CheckCharacter(c, on_equal); 234 assembler_->CheckCharacter(c, on_equal);
235 } 235 }
236 236
237 237
238 void RegExpMacroAssemblerTracer::CheckAtStart(Label* on_at_start) { 238 void RegExpMacroAssemblerTracer::CheckAtStart(Label* on_at_start) {
239 PrintF(" CheckAtStart(label[%08x]);\n", LabelToInt(on_at_start)); 239 PrintF(" CheckAtStart(label[%08x]);\n", LabelToInt(on_at_start));
240 assembler_->CheckAtStart(on_at_start); 240 assembler_->CheckAtStart(on_at_start);
241 } 241 }
242 242
243 243
244 void RegExpMacroAssemblerTracer::CheckNotAtStart(Label* on_not_at_start) { 244 void RegExpMacroAssemblerTracer::CheckNotAtStart(int cp_offset,
245 PrintF(" CheckNotAtStart(label[%08x]);\n", LabelToInt(on_not_at_start)); 245 Label* on_not_at_start) {
246 assembler_->CheckNotAtStart(on_not_at_start); 246 PrintF(" CheckNotAtStart(cp_offset=%d, label[%08x]);\n", cp_offset,
247 LabelToInt(on_not_at_start));
248 assembler_->CheckNotAtStart(cp_offset, on_not_at_start);
247 } 249 }
248 250
249 251
250 void RegExpMacroAssemblerTracer::CheckNotCharacter(unsigned c, 252 void RegExpMacroAssemblerTracer::CheckNotCharacter(unsigned c,
251 Label* on_not_equal) { 253 Label* on_not_equal) {
252 PrintablePrinter printable(c); 254 PrintablePrinter printable(c);
253 PrintF(" CheckNotCharacter(c=0x%04x%s, label[%08x]);\n", 255 PrintF(" CheckNotCharacter(c=0x%04x%s, label[%08x]);\n",
254 c, 256 c,
255 *printable, 257 *printable,
256 LabelToInt(on_not_equal)); 258 LabelToInt(on_not_equal));
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 if (i % 32 == 31 && i != kTableMask) { 344 if (i % 32 == 31 && i != kTableMask) {
343 PrintF("\n "); 345 PrintF("\n ");
344 } 346 }
345 } 347 }
346 PrintF(");\n"); 348 PrintF(");\n");
347 assembler_->CheckBitInTable(table, on_bit_set); 349 assembler_->CheckBitInTable(table, on_bit_set);
348 } 350 }
349 351
350 352
351 void RegExpMacroAssemblerTracer::CheckNotBackReference(int start_reg, 353 void RegExpMacroAssemblerTracer::CheckNotBackReference(int start_reg,
354 bool read_backward,
352 Label* on_no_match) { 355 Label* on_no_match) {
353 PrintF(" CheckNotBackReference(register=%d, label[%08x]);\n", start_reg, 356 PrintF(" CheckNotBackReference(register=%d, %s, label[%08x]);\n", start_reg,
354 LabelToInt(on_no_match)); 357 read_backward ? "backward" : "forward", LabelToInt(on_no_match));
355 assembler_->CheckNotBackReference(start_reg, on_no_match); 358 assembler_->CheckNotBackReference(start_reg, read_backward, on_no_match);
356 } 359 }
357 360
358 361
359 void RegExpMacroAssemblerTracer::CheckNotBackReferenceIgnoreCase( 362 void RegExpMacroAssemblerTracer::CheckNotBackReferenceIgnoreCase(
360 int start_reg, 363 int start_reg, bool read_backward, Label* on_no_match) {
361 Label* on_no_match) { 364 PrintF(" CheckNotBackReferenceIgnoreCase(register=%d, %s, label[%08x]);\n",
362 PrintF(" CheckNotBackReferenceIgnoreCase(register=%d, label[%08x]);\n", 365 start_reg, read_backward ? "backward" : "forward",
363 start_reg, LabelToInt(on_no_match)); 366 LabelToInt(on_no_match));
364 assembler_->CheckNotBackReferenceIgnoreCase(start_reg, on_no_match); 367 assembler_->CheckNotBackReferenceIgnoreCase(start_reg, read_backward,
368 on_no_match);
365 } 369 }
366 370
367 371
368 bool RegExpMacroAssemblerTracer::CheckSpecialCharacterClass( 372 bool RegExpMacroAssemblerTracer::CheckSpecialCharacterClass(
369 uc16 type, 373 uc16 type,
370 Label* on_no_match) { 374 Label* on_no_match) {
371 bool supported = assembler_->CheckSpecialCharacterClass(type, 375 bool supported = assembler_->CheckSpecialCharacterClass(type,
372 on_no_match); 376 on_no_match);
373 PrintF(" CheckSpecialCharacterClass(type='%c', label[%08x]): %s;\n", 377 PrintF(" CheckSpecialCharacterClass(type='%c', label[%08x]): %s;\n",
374 type, 378 type,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 } 412 }
409 413
410 414
411 Handle<HeapObject> RegExpMacroAssemblerTracer::GetCode(Handle<String> source) { 415 Handle<HeapObject> RegExpMacroAssemblerTracer::GetCode(Handle<String> source) {
412 PrintF(" GetCode(%s);\n", source->ToCString().get()); 416 PrintF(" GetCode(%s);\n", source->ToCString().get());
413 return assembler_->GetCode(source); 417 return assembler_->GetCode(source);
414 } 418 }
415 419
416 } // namespace internal 420 } // namespace internal
417 } // namespace v8 421 } // namespace v8
OLDNEW
« no previous file with comments | « src/regexp/regexp-macro-assembler-tracer.h ('k') | src/regexp/x64/regexp-macro-assembler-x64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698