| 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/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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |