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 |