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 RUNTIME_VM_REGEXP_ASSEMBLER_H_ | 5 #ifndef RUNTIME_VM_REGEXP_ASSEMBLER_H_ |
6 #define RUNTIME_VM_REGEXP_ASSEMBLER_H_ | 6 #define RUNTIME_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 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 BlockLabel* on_in_range) = 0; | 146 BlockLabel* on_in_range) = 0; |
147 virtual void CheckCharacterNotInRange(uint16_t from, | 147 virtual void CheckCharacterNotInRange(uint16_t from, |
148 uint16_t to, // Both inclusive. | 148 uint16_t to, // Both inclusive. |
149 BlockLabel* on_not_in_range) = 0; | 149 BlockLabel* on_not_in_range) = 0; |
150 | 150 |
151 // The current character (modulus the kTableSize) is looked up in the byte | 151 // The current character (modulus the kTableSize) is looked up in the byte |
152 // array, and if the found byte is non-zero, we jump to the on_bit_set label. | 152 // array, and if the found byte is non-zero, we jump to the on_bit_set label. |
153 virtual void CheckBitInTable(const TypedData& table, | 153 virtual void CheckBitInTable(const TypedData& table, |
154 BlockLabel* on_bit_set) = 0; | 154 BlockLabel* on_bit_set) = 0; |
155 | 155 |
| 156 // Checks for pre-emption and serves as an OSR entry. |
| 157 virtual void CheckPreemption(bool is_backtrack) {} |
| 158 |
156 // Checks whether the given offset from the current position is before | 159 // Checks whether the given offset from the current position is before |
157 // the end of the string. May overwrite the current character. | 160 // the end of the string. May overwrite the current character. |
158 virtual void CheckPosition(intptr_t cp_offset, BlockLabel* on_outside_input) { | 161 virtual void CheckPosition(intptr_t cp_offset, BlockLabel* on_outside_input) { |
159 LoadCurrentCharacter(cp_offset, on_outside_input, true); | 162 LoadCurrentCharacter(cp_offset, on_outside_input, true); |
160 } | 163 } |
161 // Check whether a standard/default character class matches the current | 164 // Check whether a standard/default character class matches the current |
162 // character. Returns false if the type of special character class does | 165 // character. Returns false if the type of special character class does |
163 // not have custom support. | 166 // not have custom support. |
164 // May clobber the current loaded character. | 167 // May clobber the current loaded character. |
165 virtual bool CheckSpecialCharacterClass(uint16_t type, | 168 virtual bool CheckSpecialCharacterClass(uint16_t type, |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 | 229 |
227 private: | 230 private: |
228 bool slow_safe_compiler_; | 231 bool slow_safe_compiler_; |
229 bool global_mode_; | 232 bool global_mode_; |
230 Zone* zone_; | 233 Zone* zone_; |
231 }; | 234 }; |
232 | 235 |
233 } // namespace dart | 236 } // namespace dart |
234 | 237 |
235 #endif // RUNTIME_VM_REGEXP_ASSEMBLER_H_ | 238 #endif // RUNTIME_VM_REGEXP_ASSEMBLER_H_ |
OLD | NEW |