OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef VM_REGEXP_ASSEMBLER_H_ | 5 #ifndef VM_REGEXP_ASSEMBLER_H_ |
6 #define VM_REGEXP_ASSEMBLER_H_ | 6 #define VM_REGEXP_ASSEMBLER_H_ |
7 | 7 |
8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
9 #include "vm/intermediate_language.h" | 9 #include "vm/intermediate_language.h" |
10 #include "vm/object.h" | 10 #include "vm/object.h" |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 | 462 |
463 PushArgumentInstr* PushArgument(Value* value); | 463 PushArgumentInstr* PushArgument(Value* value); |
464 PushArgumentInstr* PushLocal(LocalVariable* local); | 464 PushArgumentInstr* PushLocal(LocalVariable* local); |
465 | 465 |
466 // Load a number of characters at the given offset from the | 466 // Load a number of characters at the given offset from the |
467 // current position, into the current-character register. | 467 // current position, into the current-character register. |
468 void LoadCurrentCharacterUnchecked(intptr_t cp_offset, | 468 void LoadCurrentCharacterUnchecked(intptr_t cp_offset, |
469 intptr_t character_count); | 469 intptr_t character_count); |
470 | 470 |
471 // Returns the character within the passed string at the specified index. | 471 // Returns the character within the passed string at the specified index. |
472 Value* CharacterAt(Definition* index); | 472 Value* CharacterAt(LocalVariable* index); |
473 | 473 |
474 // Load a number of characters starting from index in the pattern string. | 474 // Load a number of characters starting from index in the pattern string. |
475 Value* LoadCodeUnitsAt(Value* pattern, | 475 Value* LoadCodeUnitsAt(LocalVariable* index, intptr_t character_count); |
476 Value* index, | |
477 intptr_t character_count); | |
478 | 476 |
479 // Check whether preemption has been requested. | 477 // Check whether preemption has been requested. |
480 void CheckPreemption(); | 478 void CheckPreemption(); |
481 | 479 |
482 // Byte size of chars in the string to match (decided by the Mode argument) | 480 // Byte size of chars in the string to match (decided by the Mode argument) |
483 inline intptr_t char_size() { return static_cast<int>(mode_); } | 481 inline intptr_t char_size() { return static_cast<int>(mode_); } |
484 | 482 |
485 // Equivalent to a conditional branch to the label, unless the label | 483 // Equivalent to a conditional branch to the label, unless the label |
486 // is NULL, in which case it is a conditional Backtrack. | 484 // is NULL, in which case it is a conditional Backtrack. |
487 void BranchOrBacktrack(ComparisonInstr* comparison, | 485 void BranchOrBacktrack(ComparisonInstr* comparison, |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
599 // The start index within the string, passed as a function parameter. | 597 // The start index within the string, passed as a function parameter. |
600 LocalVariable* start_index_param_; | 598 LocalVariable* start_index_param_; |
601 | 599 |
602 // An assortment of utility variables. | 600 // An assortment of utility variables. |
603 LocalVariable* capture_length_; | 601 LocalVariable* capture_length_; |
604 LocalVariable* match_start_index_; | 602 LocalVariable* match_start_index_; |
605 LocalVariable* capture_start_index_; | 603 LocalVariable* capture_start_index_; |
606 LocalVariable* match_end_index_; | 604 LocalVariable* match_end_index_; |
607 LocalVariable* char_in_capture_; | 605 LocalVariable* char_in_capture_; |
608 LocalVariable* char_in_match_; | 606 LocalVariable* char_in_match_; |
| 607 LocalVariable* index_temp_; |
609 | 608 |
610 LocalVariable* result_; | 609 LocalVariable* result_; |
611 | 610 |
612 // Stored positions containing group bounds. Generated as needed. | 611 // Stored positions containing group bounds. Generated as needed. |
613 const intptr_t position_registers_count_; | 612 const intptr_t position_registers_count_; |
614 GrowableArray<LocalVariable*> position_registers_; | 613 GrowableArray<LocalVariable*> position_registers_; |
615 | 614 |
616 // The actual array object used as the stack. | 615 // The actual array object used as the stack. |
617 GrowableObjectArray& stack_array_; | 616 GrowableObjectArray& stack_array_; |
618 | 617 |
619 IdAllocator block_id_; | 618 IdAllocator block_id_; |
620 IdAllocator temp_id_; | 619 IdAllocator temp_id_; |
621 IdAllocator arg_id_; | 620 IdAllocator arg_id_; |
622 IdAllocator local_id_; | 621 IdAllocator local_id_; |
623 IdAllocator indirect_id_; | 622 IdAllocator indirect_id_; |
624 }; | 623 }; |
625 | 624 |
626 | 625 |
627 } // namespace dart | 626 } // namespace dart |
628 | 627 |
629 #endif // VM_REGEXP_ASSEMBLER_H_ | 628 #endif // VM_REGEXP_ASSEMBLER_H_ |
OLD | NEW |