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

Side by Side Diff: src/regexp-macro-assembler-tracer.h

Issue 165443: X64: Implement RegExp natively. (Closed)
Patch Set: Addressed review comments. Created 11 years, 4 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 2008 the V8 project authors. All rights reserved. 1 // Copyright 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 25 matching lines...) Expand all
36 public: 36 public:
37 explicit RegExpMacroAssemblerTracer(RegExpMacroAssembler* assembler); 37 explicit RegExpMacroAssemblerTracer(RegExpMacroAssembler* assembler);
38 virtual ~RegExpMacroAssemblerTracer(); 38 virtual ~RegExpMacroAssemblerTracer();
39 virtual int stack_limit_slack() { return assembler_->stack_limit_slack(); } 39 virtual int stack_limit_slack() { return assembler_->stack_limit_slack(); }
40 40
41 virtual void AdvanceCurrentPosition(int by); // Signed cp change. 41 virtual void AdvanceCurrentPosition(int by); // Signed cp change.
42 virtual void AdvanceRegister(int reg, int by); // r[reg] += by. 42 virtual void AdvanceRegister(int reg, int by); // r[reg] += by.
43 virtual void Backtrack(); 43 virtual void Backtrack();
44 virtual void Bind(Label* label); 44 virtual void Bind(Label* label);
45 virtual void CheckAtStart(Label* on_at_start); 45 virtual void CheckAtStart(Label* on_at_start);
46 virtual void CheckBitmap(uc16 start, Label* bitmap, Label* on_zero);
47 virtual void CheckCharacter(uint32_t c, Label* on_equal); 46 virtual void CheckCharacter(uint32_t c, Label* on_equal);
48 virtual void CheckCharacterAfterAnd(uint32_t c, 47 virtual void CheckCharacterAfterAnd(uint32_t c,
49 uint32_t and_with, 48 uint32_t and_with,
50 Label* on_equal); 49 Label* on_equal);
51 virtual void CheckCharacterGT(uc16 limit, Label* on_greater); 50 virtual void CheckCharacterGT(uc16 limit, Label* on_greater);
52 virtual void CheckCharacterLT(uc16 limit, Label* on_less); 51 virtual void CheckCharacterLT(uc16 limit, Label* on_less);
53 virtual void CheckCharacters( 52 virtual void CheckCharacters(
54 Vector<const uc16> str, 53 Vector<const uc16> str,
55 int cp_offset, 54 int cp_offset,
56 Label* on_failure, 55 Label* on_failure,
57 bool check_end_of_string); 56 bool check_end_of_string);
58 virtual void CheckGreedyLoop(Label* on_tos_equals_current_position); 57 virtual void CheckGreedyLoop(Label* on_tos_equals_current_position);
59 virtual void CheckNotAtStart(Label* on_not_at_start); 58 virtual void CheckNotAtStart(Label* on_not_at_start);
60 virtual void CheckNotBackReference(int start_reg, Label* on_no_match); 59 virtual void CheckNotBackReference(int start_reg, Label* on_no_match);
61 virtual void CheckNotBackReferenceIgnoreCase(int start_reg, 60 virtual void CheckNotBackReferenceIgnoreCase(int start_reg,
62 Label* on_no_match); 61 Label* on_no_match);
63 virtual void CheckNotRegistersEqual(int reg1, int reg2, Label* on_not_equal); 62 virtual void CheckNotRegistersEqual(int reg1, int reg2, Label* on_not_equal);
64 virtual void CheckNotCharacter(uint32_t c, Label* on_not_equal); 63 virtual void CheckNotCharacter(uint32_t c, Label* on_not_equal);
65 virtual void CheckNotCharacterAfterAnd(uint32_t c, 64 virtual void CheckNotCharacterAfterAnd(uint32_t c,
66 uint32_t and_with, 65 uint32_t and_with,
67 Label* on_not_equal); 66 Label* on_not_equal);
68 virtual void CheckNotCharacterAfterMinusAnd(uc16 c, 67 virtual void CheckNotCharacterAfterMinusAnd(uc16 c,
69 uc16 minus, 68 uc16 minus,
70 uc16 and_with, 69 uc16 and_with,
71 Label* on_not_equal); 70 Label* on_not_equal);
72 virtual bool CheckSpecialCharacterClass(uc16 type, 71 virtual bool CheckSpecialCharacterClass(uc16 type,
73 int cp_offset, 72 int cp_offset,
74 bool check_offset, 73 bool check_offset,
75 Label* on_no_match); 74 Label* on_no_match);
76 virtual void DispatchByteMap(
77 uc16 start,
78 Label* byte_map,
79 const Vector<Label*>& destinations);
80 virtual void DispatchHalfNibbleMap(
81 uc16 start,
82 Label* half_nibble_map,
83 const Vector<Label*>& destinations);
84 virtual void DispatchHighByteMap(
85 byte start,
86 Label* byte_map,
87 const Vector<Label*>& destinations);
88 virtual void EmitOrLink(Label* label);
89 virtual void Fail(); 75 virtual void Fail();
90 virtual Handle<Object> GetCode(Handle<String> source); 76 virtual Handle<Object> GetCode(Handle<String> source);
91 virtual void GoTo(Label* label); 77 virtual void GoTo(Label* label);
92 virtual void IfRegisterGE(int reg, int comparand, Label* if_ge); 78 virtual void IfRegisterGE(int reg, int comparand, Label* if_ge);
93 virtual void IfRegisterLT(int reg, int comparand, Label* if_lt); 79 virtual void IfRegisterLT(int reg, int comparand, Label* if_lt);
94 virtual void IfRegisterEqPos(int reg, Label* if_eq); 80 virtual void IfRegisterEqPos(int reg, Label* if_eq);
95 virtual IrregexpImplementation Implementation(); 81 virtual IrregexpImplementation Implementation();
96 virtual void LoadCurrentCharacter(int cp_offset, 82 virtual void LoadCurrentCharacter(int cp_offset,
97 Label* on_end_of_input, 83 Label* on_end_of_input,
98 bool check_bounds = true, 84 bool check_bounds = true,
(...skipping 11 matching lines...) Expand all
110 virtual void WriteCurrentPositionToRegister(int reg, int cp_offset); 96 virtual void WriteCurrentPositionToRegister(int reg, int cp_offset);
111 virtual void ClearRegisters(int reg_from, int reg_to); 97 virtual void ClearRegisters(int reg_from, int reg_to);
112 virtual void WriteStackPointerToRegister(int reg); 98 virtual void WriteStackPointerToRegister(int reg);
113 private: 99 private:
114 RegExpMacroAssembler* assembler_; 100 RegExpMacroAssembler* assembler_;
115 }; 101 };
116 102
117 }} // namespace v8::internal 103 }} // namespace v8::internal
118 104
119 #endif // V8_REGEXP_MACRO_ASSEMBLER_TRACER_H_ 105 #endif // V8_REGEXP_MACRO_ASSEMBLER_TRACER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698