Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Side by Side Diff: runtime/vm/regexp_assembler.h

Issue 2950783003: VM(RegExp): Allow OSR optimization of RegExp :matcher functions. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698