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

Side by Side Diff: src/jsregexp.h

Issue 7754022: Fix presubmit errors caused by updated depot tools (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « src/inspector.h ('k') | src/list.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 // Sets are equal. 248 // Sets are equal.
249 bool Equals() { return (bits_ & (kInFirst | kInSecond)) == 0; } 249 bool Equals() { return (bits_ & (kInFirst | kInSecond)) == 0; }
250 // First set contains second. 250 // First set contains second.
251 bool Contains() { return (bits_ & kInSecond) == 0; } 251 bool Contains() { return (bits_ & kInSecond) == 0; }
252 // Second set contains first. 252 // Second set contains first.
253 bool ContainedIn() { return (bits_ & kInFirst) == 0; } 253 bool ContainedIn() { return (bits_ & kInFirst) == 0; }
254 bool NonTrivialIntersection() { 254 bool NonTrivialIntersection() {
255 return (bits_ == (kInFirst | kInSecond | kInBoth)); 255 return (bits_ == (kInFirst | kInSecond | kInBoth));
256 } 256 }
257 int value() { return bits_; } 257 int value() { return bits_; }
258
258 private: 259 private:
259 int bits_; 260 int bits_;
260 }; 261 };
261 262
262 263
263 class CharacterRange { 264 class CharacterRange {
264 public: 265 public:
265 CharacterRange() : from_(0), to_(0) { } 266 CharacterRange() : from_(0), to_(0) { }
266 // For compatibility with the CHECK_OK macro 267 // For compatibility with the CHECK_OK macro
267 CharacterRange(void* null) { ASSERT_EQ(NULL, null); } //NOLINT 268 CharacterRange(void* null) { ASSERT_EQ(NULL, null); } //NOLINT
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 return 1; 398 return 1;
398 } 399 }
399 }; 400 };
400 401
401 void AddRange(CharacterRange range, int value); 402 void AddRange(CharacterRange range, int value);
402 OutSet* Get(uc16 value); 403 OutSet* Get(uc16 value);
403 void Dump(); 404 void Dump();
404 405
405 template <typename Callback> 406 template <typename Callback>
406 void ForEach(Callback* callback) { return tree()->ForEach(callback); } 407 void ForEach(Callback* callback) { return tree()->ForEach(callback); }
408
407 private: 409 private:
408 // There can't be a static empty set since it allocates its 410 // There can't be a static empty set since it allocates its
409 // successors in a zone and caches them. 411 // successors in a zone and caches them.
410 OutSet* empty() { return &empty_; } 412 OutSet* empty() { return &empty_; }
411 OutSet empty_; 413 OutSet empty_;
412 ZoneSplayTree<Config>* tree() { return &tree_; } 414 ZoneSplayTree<Config>* tree() { return &tree_; }
413 ZoneSplayTree<Config> tree_; 415 ZoneSplayTree<Config> tree_;
414 }; 416 };
415 417
416 418
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 int filled_in, 788 int filled_in,
787 bool not_at_start) { 789 bool not_at_start) {
788 return on_success()->GetQuickCheckDetails( 790 return on_success()->GetQuickCheckDetails(
789 details, compiler, filled_in, not_at_start); 791 details, compiler, filled_in, not_at_start);
790 } 792 }
791 Type type() { return type_; } 793 Type type() { return type_; }
792 // TODO(erikcorry): We should allow some action nodes in greedy loops. 794 // TODO(erikcorry): We should allow some action nodes in greedy loops.
793 virtual int GreedyLoopTextLength() { return kNodeIsTooComplexForGreedyLoops; } 795 virtual int GreedyLoopTextLength() { return kNodeIsTooComplexForGreedyLoops; }
794 virtual ActionNode* Clone() { return new ActionNode(*this); } 796 virtual ActionNode* Clone() { return new ActionNode(*this); }
795 virtual int ComputeFirstCharacterSet(int budget); 797 virtual int ComputeFirstCharacterSet(int budget);
798
796 private: 799 private:
797 union { 800 union {
798 struct { 801 struct {
799 int reg; 802 int reg;
800 int value; 803 int value;
801 } u_store_register; 804 } u_store_register;
802 struct { 805 struct {
803 int reg; 806 int reg;
804 } u_increment_register; 807 } u_increment_register;
805 struct { 808 struct {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 ZoneList<TextElement>* elements() { return elms_; } 857 ZoneList<TextElement>* elements() { return elms_; }
855 void MakeCaseIndependent(bool is_ascii); 858 void MakeCaseIndependent(bool is_ascii);
856 virtual int GreedyLoopTextLength(); 859 virtual int GreedyLoopTextLength();
857 virtual TextNode* Clone() { 860 virtual TextNode* Clone() {
858 TextNode* result = new TextNode(*this); 861 TextNode* result = new TextNode(*this);
859 result->CalculateOffsets(); 862 result->CalculateOffsets();
860 return result; 863 return result;
861 } 864 }
862 void CalculateOffsets(); 865 void CalculateOffsets();
863 virtual int ComputeFirstCharacterSet(int budget); 866 virtual int ComputeFirstCharacterSet(int budget);
867
864 private: 868 private:
865 enum TextEmitPassType { 869 enum TextEmitPassType {
866 NON_ASCII_MATCH, // Check for characters that can't match. 870 NON_ASCII_MATCH, // Check for characters that can't match.
867 SIMPLE_CHARACTER_MATCH, // Case-dependent single character check. 871 SIMPLE_CHARACTER_MATCH, // Case-dependent single character check.
868 NON_LETTER_CHARACTER_MATCH, // Check characters that have no case equivs. 872 NON_LETTER_CHARACTER_MATCH, // Check characters that have no case equivs.
869 CASE_CHARACTER_MATCH, // Case-independent single character check. 873 CASE_CHARACTER_MATCH, // Case-independent single character check.
870 CHARACTER_CLASS_MATCH // Character class. 874 CHARACTER_CLASS_MATCH // Character class.
871 }; 875 };
872 static bool SkipPass(int pass, bool ignore_case); 876 static bool SkipPass(int pass, bool ignore_case);
873 static const int kFirstRealPass = SIMPLE_CHARACTER_MATCH; 877 static const int kFirstRealPass = SIMPLE_CHARACTER_MATCH;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 int recursion_depth, 922 int recursion_depth,
919 bool not_at_start); 923 bool not_at_start);
920 virtual void GetQuickCheckDetails(QuickCheckDetails* details, 924 virtual void GetQuickCheckDetails(QuickCheckDetails* details,
921 RegExpCompiler* compiler, 925 RegExpCompiler* compiler,
922 int filled_in, 926 int filled_in,
923 bool not_at_start); 927 bool not_at_start);
924 virtual int ComputeFirstCharacterSet(int budget); 928 virtual int ComputeFirstCharacterSet(int budget);
925 virtual AssertionNode* Clone() { return new AssertionNode(*this); } 929 virtual AssertionNode* Clone() { return new AssertionNode(*this); }
926 AssertionNodeType type() { return type_; } 930 AssertionNodeType type() { return type_; }
927 void set_type(AssertionNodeType type) { type_ = type; } 931 void set_type(AssertionNodeType type) { type_ = type; }
932
928 private: 933 private:
929 AssertionNode(AssertionNodeType t, RegExpNode* on_success) 934 AssertionNode(AssertionNodeType t, RegExpNode* on_success)
930 : SeqRegExpNode(on_success), type_(t) { } 935 : SeqRegExpNode(on_success), type_(t) { }
931 AssertionNodeType type_; 936 AssertionNodeType type_;
932 }; 937 };
933 938
934 939
935 class BackReferenceNode: public SeqRegExpNode { 940 class BackReferenceNode: public SeqRegExpNode {
936 public: 941 public:
937 BackReferenceNode(int start_reg, 942 BackReferenceNode(int start_reg,
(...skipping 10 matching lines...) Expand all
948 int recursion_depth, 953 int recursion_depth,
949 bool not_at_start); 954 bool not_at_start);
950 virtual void GetQuickCheckDetails(QuickCheckDetails* details, 955 virtual void GetQuickCheckDetails(QuickCheckDetails* details,
951 RegExpCompiler* compiler, 956 RegExpCompiler* compiler,
952 int characters_filled_in, 957 int characters_filled_in,
953 bool not_at_start) { 958 bool not_at_start) {
954 return; 959 return;
955 } 960 }
956 virtual BackReferenceNode* Clone() { return new BackReferenceNode(*this); } 961 virtual BackReferenceNode* Clone() { return new BackReferenceNode(*this); }
957 virtual int ComputeFirstCharacterSet(int budget); 962 virtual int ComputeFirstCharacterSet(int budget);
963
958 private: 964 private:
959 int start_reg_; 965 int start_reg_;
960 int end_reg_; 966 int end_reg_;
961 }; 967 };
962 968
963 969
964 class EndNode: public RegExpNode { 970 class EndNode: public RegExpNode {
965 public: 971 public:
966 enum Action { ACCEPT, BACKTRACK, NEGATIVE_SUBMATCH_SUCCESS }; 972 enum Action { ACCEPT, BACKTRACK, NEGATIVE_SUBMATCH_SUCCESS };
967 explicit EndNode(Action action) : action_(action) { } 973 explicit EndNode(Action action) : action_(action) { }
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
1294 void set_stop_node(RegExpNode* node) { stop_node_ = node; } 1300 void set_stop_node(RegExpNode* node) { stop_node_ = node; }
1295 void set_loop_label(Label* label) { loop_label_ = label; } 1301 void set_loop_label(Label* label) { loop_label_ = label; }
1296 void set_characters_preloaded(int count) { characters_preloaded_ = count; } 1302 void set_characters_preloaded(int count) { characters_preloaded_ = count; }
1297 void set_bound_checked_up_to(int to) { bound_checked_up_to_ = to; } 1303 void set_bound_checked_up_to(int to) { bound_checked_up_to_ = to; }
1298 void set_flush_budget(int to) { flush_budget_ = to; } 1304 void set_flush_budget(int to) { flush_budget_ = to; }
1299 void set_quick_check_performed(QuickCheckDetails* d) { 1305 void set_quick_check_performed(QuickCheckDetails* d) {
1300 quick_check_performed_ = *d; 1306 quick_check_performed_ = *d;
1301 } 1307 }
1302 void InvalidateCurrentCharacter(); 1308 void InvalidateCurrentCharacter();
1303 void AdvanceCurrentPositionInTrace(int by, RegExpCompiler* compiler); 1309 void AdvanceCurrentPositionInTrace(int by, RegExpCompiler* compiler);
1310
1304 private: 1311 private:
1305 int FindAffectedRegisters(OutSet* affected_registers); 1312 int FindAffectedRegisters(OutSet* affected_registers);
1306 void PerformDeferredActions(RegExpMacroAssembler* macro, 1313 void PerformDeferredActions(RegExpMacroAssembler* macro,
1307 int max_register, 1314 int max_register,
1308 OutSet& affected_registers, 1315 OutSet& affected_registers,
1309 OutSet* registers_to_pop, 1316 OutSet* registers_to_pop,
1310 OutSet* registers_to_clear); 1317 OutSet* registers_to_clear);
1311 void RestoreAffectedRegisters(RegExpMacroAssembler* macro, 1318 void RestoreAffectedRegisters(RegExpMacroAssembler* macro,
1312 int max_register, 1319 int max_register,
1313 OutSet& registers_to_pop, 1320 OutSet& registers_to_pop,
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 virtual void VisitLoopChoice(LoopChoiceNode* that); 1402 virtual void VisitLoopChoice(LoopChoiceNode* that);
1396 1403
1397 bool has_failed() { return error_message_ != NULL; } 1404 bool has_failed() { return error_message_ != NULL; }
1398 const char* error_message() { 1405 const char* error_message() {
1399 ASSERT(error_message_ != NULL); 1406 ASSERT(error_message_ != NULL);
1400 return error_message_; 1407 return error_message_;
1401 } 1408 }
1402 void fail(const char* error_message) { 1409 void fail(const char* error_message) {
1403 error_message_ = error_message; 1410 error_message_ = error_message;
1404 } 1411 }
1412
1405 private: 1413 private:
1406 bool ignore_case_; 1414 bool ignore_case_;
1407 bool is_ascii_; 1415 bool is_ascii_;
1408 const char* error_message_; 1416 const char* error_message_;
1409 1417
1410 DISALLOW_IMPLICIT_CONSTRUCTORS(Analysis); 1418 DISALLOW_IMPLICIT_CONSTRUCTORS(Analysis);
1411 }; 1419 };
1412 1420
1413 1421
1414 struct RegExpCompileData { 1422 struct RegExpCompileData {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
1482 int* vector_; 1490 int* vector_;
1483 int offsets_vector_length_; 1491 int offsets_vector_length_;
1484 1492
1485 friend class ExternalReference; 1493 friend class ExternalReference;
1486 }; 1494 };
1487 1495
1488 1496
1489 } } // namespace v8::internal 1497 } } // namespace v8::internal
1490 1498
1491 #endif // V8_JSREGEXP_H_ 1499 #endif // V8_JSREGEXP_H_
OLDNEW
« no previous file with comments | « src/inspector.h ('k') | src/list.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698