| 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 < 8); | 16 DCHECK(type < 6); |
| 17 const char* impl_names[] = {"IA32", "ARM", "ARM64", "MIPS", | 17 const char* impl_names[] = {"IA32", "ARM", "ARM64", |
| 18 "PPC", "X64", "X87", "Bytecode"}; | 18 "MIPS", "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(int cp_offset, | 244 void RegExpMacroAssemblerTracer::CheckNotAtStart(Label* on_not_at_start) { |
| 245 Label* on_not_at_start) { | 245 PrintF(" CheckNotAtStart(label[%08x]);\n", LabelToInt(on_not_at_start)); |
| 246 PrintF(" CheckNotAtStart(cp_offset=%d, label[%08x]);\n", cp_offset, | 246 assembler_->CheckNotAtStart(on_not_at_start); |
| 247 LabelToInt(on_not_at_start)); | |
| 248 assembler_->CheckNotAtStart(cp_offset, on_not_at_start); | |
| 249 } | 247 } |
| 250 | 248 |
| 251 | 249 |
| 252 void RegExpMacroAssemblerTracer::CheckNotCharacter(unsigned c, | 250 void RegExpMacroAssemblerTracer::CheckNotCharacter(unsigned c, |
| 253 Label* on_not_equal) { | 251 Label* on_not_equal) { |
| 254 PrintablePrinter printable(c); | 252 PrintablePrinter printable(c); |
| 255 PrintF(" CheckNotCharacter(c=0x%04x%s, label[%08x]);\n", | 253 PrintF(" CheckNotCharacter(c=0x%04x%s, label[%08x]);\n", |
| 256 c, | 254 c, |
| 257 *printable, | 255 *printable, |
| 258 LabelToInt(on_not_equal)); | 256 LabelToInt(on_not_equal)); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 if (i % 32 == 31 && i != kTableMask) { | 342 if (i % 32 == 31 && i != kTableMask) { |
| 345 PrintF("\n "); | 343 PrintF("\n "); |
| 346 } | 344 } |
| 347 } | 345 } |
| 348 PrintF(");\n"); | 346 PrintF(");\n"); |
| 349 assembler_->CheckBitInTable(table, on_bit_set); | 347 assembler_->CheckBitInTable(table, on_bit_set); |
| 350 } | 348 } |
| 351 | 349 |
| 352 | 350 |
| 353 void RegExpMacroAssemblerTracer::CheckNotBackReference(int start_reg, | 351 void RegExpMacroAssemblerTracer::CheckNotBackReference(int start_reg, |
| 354 bool read_backward, | |
| 355 Label* on_no_match) { | 352 Label* on_no_match) { |
| 356 PrintF(" CheckNotBackReference(register=%d, %s, label[%08x]);\n", start_reg, | 353 PrintF(" CheckNotBackReference(register=%d, label[%08x]);\n", start_reg, |
| 357 read_backward ? "backward" : "forward", LabelToInt(on_no_match)); | 354 LabelToInt(on_no_match)); |
| 358 assembler_->CheckNotBackReference(start_reg, read_backward, on_no_match); | 355 assembler_->CheckNotBackReference(start_reg, on_no_match); |
| 359 } | 356 } |
| 360 | 357 |
| 361 | 358 |
| 362 void RegExpMacroAssemblerTracer::CheckNotBackReferenceIgnoreCase( | 359 void RegExpMacroAssemblerTracer::CheckNotBackReferenceIgnoreCase( |
| 363 int start_reg, bool read_backward, Label* on_no_match) { | 360 int start_reg, |
| 364 PrintF(" CheckNotBackReferenceIgnoreCase(register=%d, %s, label[%08x]);\n", | 361 Label* on_no_match) { |
| 365 start_reg, read_backward ? "backward" : "forward", | 362 PrintF(" CheckNotBackReferenceIgnoreCase(register=%d, label[%08x]);\n", |
| 366 LabelToInt(on_no_match)); | 363 start_reg, LabelToInt(on_no_match)); |
| 367 assembler_->CheckNotBackReferenceIgnoreCase(start_reg, read_backward, | 364 assembler_->CheckNotBackReferenceIgnoreCase(start_reg, on_no_match); |
| 368 on_no_match); | |
| 369 } | 365 } |
| 370 | 366 |
| 371 | 367 |
| 372 bool RegExpMacroAssemblerTracer::CheckSpecialCharacterClass( | 368 bool RegExpMacroAssemblerTracer::CheckSpecialCharacterClass( |
| 373 uc16 type, | 369 uc16 type, |
| 374 Label* on_no_match) { | 370 Label* on_no_match) { |
| 375 bool supported = assembler_->CheckSpecialCharacterClass(type, | 371 bool supported = assembler_->CheckSpecialCharacterClass(type, |
| 376 on_no_match); | 372 on_no_match); |
| 377 PrintF(" CheckSpecialCharacterClass(type='%c', label[%08x]): %s;\n", | 373 PrintF(" CheckSpecialCharacterClass(type='%c', label[%08x]): %s;\n", |
| 378 type, | 374 type, |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 } | 408 } |
| 413 | 409 |
| 414 | 410 |
| 415 Handle<HeapObject> RegExpMacroAssemblerTracer::GetCode(Handle<String> source) { | 411 Handle<HeapObject> RegExpMacroAssemblerTracer::GetCode(Handle<String> source) { |
| 416 PrintF(" GetCode(%s);\n", source->ToCString().get()); | 412 PrintF(" GetCode(%s);\n", source->ToCString().get()); |
| 417 return assembler_->GetCode(source); | 413 return assembler_->GetCode(source); |
| 418 } | 414 } |
| 419 | 415 |
| 420 } // namespace internal | 416 } // namespace internal |
| 421 } // namespace v8 | 417 } // namespace v8 |
| OLD | NEW |