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 |