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 | |
159 // Checks whether the given offset from the current position is before | 156 // Checks whether the given offset from the current position is before |
160 // the end of the string. May overwrite the current character. | 157 // the end of the string. May overwrite the current character. |
161 virtual void CheckPosition(intptr_t cp_offset, BlockLabel* on_outside_input) { | 158 virtual void CheckPosition(intptr_t cp_offset, BlockLabel* on_outside_input) { |
162 LoadCurrentCharacter(cp_offset, on_outside_input, true); | 159 LoadCurrentCharacter(cp_offset, on_outside_input, true); |
163 } | 160 } |
164 // Check whether a standard/default character class matches the current | 161 // Check whether a standard/default character class matches the current |
165 // character. Returns false if the type of special character class does | 162 // character. Returns false if the type of special character class does |
166 // not have custom support. | 163 // not have custom support. |
167 // May clobber the current loaded character. | 164 // May clobber the current loaded character. |
168 virtual bool CheckSpecialCharacterClass(uint16_t type, | 165 virtual bool CheckSpecialCharacterClass(uint16_t type, |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 | 226 |
230 private: | 227 private: |
231 bool slow_safe_compiler_; | 228 bool slow_safe_compiler_; |
232 bool global_mode_; | 229 bool global_mode_; |
233 Zone* zone_; | 230 Zone* zone_; |
234 }; | 231 }; |
235 | 232 |
236 } // namespace dart | 233 } // namespace dart |
237 | 234 |
238 #endif // RUNTIME_VM_REGEXP_ASSEMBLER_H_ | 235 #endif // RUNTIME_VM_REGEXP_ASSEMBLER_H_ |
OLD | NEW |