| 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 #ifndef V8_JSREGEXP_H_ | 5 #ifndef V8_JSREGEXP_H_ |
| 6 #define V8_JSREGEXP_H_ | 6 #define V8_JSREGEXP_H_ |
| 7 | 7 |
| 8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
| 9 #include "src/assembler.h" | 9 #include "src/assembler.h" |
| 10 #include "src/zone-inl.h" | 10 #include "src/zone-inl.h" |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 uc16 to_; | 289 uc16 to_; |
| 290 }; | 290 }; |
| 291 | 291 |
| 292 | 292 |
| 293 // A set of unsigned integers that behaves especially well on small | 293 // A set of unsigned integers that behaves especially well on small |
| 294 // integers (< 32). May do zone-allocation. | 294 // integers (< 32). May do zone-allocation. |
| 295 class OutSet: public ZoneObject { | 295 class OutSet: public ZoneObject { |
| 296 public: | 296 public: |
| 297 OutSet() : first_(0), remaining_(NULL), successors_(NULL) { } | 297 OutSet() : first_(0), remaining_(NULL), successors_(NULL) { } |
| 298 OutSet* Extend(unsigned value, Zone* zone); | 298 OutSet* Extend(unsigned value, Zone* zone); |
| 299 bool Get(unsigned value); | 299 bool Get(unsigned value) const; |
| 300 static const unsigned kFirstLimit = 32; | 300 static const unsigned kFirstLimit = 32; |
| 301 | 301 |
| 302 private: | 302 private: |
| 303 // Destructively set a value in this set. In most cases you want | 303 // Destructively set a value in this set. In most cases you want |
| 304 // to use Extend instead to ensure that only one instance exists | 304 // to use Extend instead to ensure that only one instance exists |
| 305 // that contains the same values. | 305 // that contains the same values. |
| 306 void Set(unsigned value, Zone* zone); | 306 void Set(unsigned value, Zone* zone); |
| 307 | 307 |
| 308 // The successors are a list of sets that contain the same values | 308 // The successors are a list of sets that contain the same values |
| 309 // as this set and the one more value that is not present in this | 309 // as this set and the one more value that is not present in this |
| (...skipping 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1458 void set_quick_check_performed(QuickCheckDetails* d) { | 1458 void set_quick_check_performed(QuickCheckDetails* d) { |
| 1459 quick_check_performed_ = *d; | 1459 quick_check_performed_ = *d; |
| 1460 } | 1460 } |
| 1461 void InvalidateCurrentCharacter(); | 1461 void InvalidateCurrentCharacter(); |
| 1462 void AdvanceCurrentPositionInTrace(int by, RegExpCompiler* compiler); | 1462 void AdvanceCurrentPositionInTrace(int by, RegExpCompiler* compiler); |
| 1463 | 1463 |
| 1464 private: | 1464 private: |
| 1465 int FindAffectedRegisters(OutSet* affected_registers, Zone* zone); | 1465 int FindAffectedRegisters(OutSet* affected_registers, Zone* zone); |
| 1466 void PerformDeferredActions(RegExpMacroAssembler* macro, | 1466 void PerformDeferredActions(RegExpMacroAssembler* macro, |
| 1467 int max_register, | 1467 int max_register, |
| 1468 OutSet& affected_registers, | 1468 const OutSet& affected_registers, |
| 1469 OutSet* registers_to_pop, | 1469 OutSet* registers_to_pop, |
| 1470 OutSet* registers_to_clear, | 1470 OutSet* registers_to_clear, |
| 1471 Zone* zone); | 1471 Zone* zone); |
| 1472 void RestoreAffectedRegisters(RegExpMacroAssembler* macro, | 1472 void RestoreAffectedRegisters(RegExpMacroAssembler* macro, |
| 1473 int max_register, | 1473 int max_register, |
| 1474 OutSet& registers_to_pop, | 1474 const OutSet& registers_to_pop, |
| 1475 OutSet& registers_to_clear); | 1475 const OutSet& registers_to_clear); |
| 1476 int cp_offset_; | 1476 int cp_offset_; |
| 1477 DeferredAction* actions_; | 1477 DeferredAction* actions_; |
| 1478 Label* backtrack_; | 1478 Label* backtrack_; |
| 1479 RegExpNode* stop_node_; | 1479 RegExpNode* stop_node_; |
| 1480 Label* loop_label_; | 1480 Label* loop_label_; |
| 1481 int characters_preloaded_; | 1481 int characters_preloaded_; |
| 1482 int bound_checked_up_to_; | 1482 int bound_checked_up_to_; |
| 1483 QuickCheckDetails quick_check_performed_; | 1483 QuickCheckDetails quick_check_performed_; |
| 1484 int flush_budget_; | 1484 int flush_budget_; |
| 1485 TriBool at_start_; | 1485 TriBool at_start_; |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1616 Handle<String> sample_subject, | 1616 Handle<String> sample_subject, |
| 1617 bool is_ascii, Zone* zone); | 1617 bool is_ascii, Zone* zone); |
| 1618 | 1618 |
| 1619 static void DotPrint(const char* label, RegExpNode* node, bool ignore_case); | 1619 static void DotPrint(const char* label, RegExpNode* node, bool ignore_case); |
| 1620 }; | 1620 }; |
| 1621 | 1621 |
| 1622 | 1622 |
| 1623 } } // namespace v8::internal | 1623 } } // namespace v8::internal |
| 1624 | 1624 |
| 1625 #endif // V8_JSREGEXP_H_ | 1625 #endif // V8_JSREGEXP_H_ |
| OLD | NEW |