OLD | NEW |
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 23 matching lines...) Expand all Loading... |
34 class RegExpMacroAssemblerTracer: public RegExpMacroAssembler { | 34 class RegExpMacroAssemblerTracer: public RegExpMacroAssembler { |
35 public: | 35 public: |
36 explicit RegExpMacroAssemblerTracer(RegExpMacroAssembler* assembler); | 36 explicit RegExpMacroAssemblerTracer(RegExpMacroAssembler* assembler); |
37 virtual ~RegExpMacroAssemblerTracer(); | 37 virtual ~RegExpMacroAssemblerTracer(); |
38 | 38 |
39 virtual void AdvanceCurrentPosition(int by); // Signed cp change. | 39 virtual void AdvanceCurrentPosition(int by); // Signed cp change. |
40 virtual void AdvanceRegister(int reg, int by); // r[reg] += by. | 40 virtual void AdvanceRegister(int reg, int by); // r[reg] += by. |
41 virtual void Backtrack(); | 41 virtual void Backtrack(); |
42 virtual void Bind(Label* label); | 42 virtual void Bind(Label* label); |
43 virtual void CheckBitmap(uc16 start, Label* bitmap, Label* on_zero); | 43 virtual void CheckBitmap(uc16 start, Label* bitmap, Label* on_zero); |
44 virtual void CheckCharacter(uc16 c, Label* on_equal); | 44 virtual void CheckCharacter(uint32_t c, Label* on_equal); |
| 45 virtual void CheckCharacterAfterAnd(uint32_t c, |
| 46 uint32_t and_with, |
| 47 Label* on_equal); |
45 virtual void CheckCharacterGT(uc16 limit, Label* on_greater); | 48 virtual void CheckCharacterGT(uc16 limit, Label* on_greater); |
46 virtual void CheckCharacterLT(uc16 limit, Label* on_less); | 49 virtual void CheckCharacterLT(uc16 limit, Label* on_less); |
47 virtual void CheckCharacters( | 50 virtual void CheckCharacters( |
48 Vector<const uc16> str, | 51 Vector<const uc16> str, |
49 int cp_offset, | 52 int cp_offset, |
50 Label* on_failure, | 53 Label* on_failure, |
51 bool check_end_of_string); | 54 bool check_end_of_string); |
52 virtual void CheckGreedyLoop(Label* on_tos_equals_current_position); | 55 virtual void CheckGreedyLoop(Label* on_tos_equals_current_position); |
53 virtual void CheckNotAtStart(Label* on_not_at_start); | 56 virtual void CheckNotAtStart(Label* on_not_at_start); |
54 virtual void CheckNotBackReference(int start_reg, Label* on_no_match); | 57 virtual void CheckNotBackReference(int start_reg, Label* on_no_match); |
55 virtual void CheckNotBackReferenceIgnoreCase(int start_reg, | 58 virtual void CheckNotBackReferenceIgnoreCase(int start_reg, |
56 Label* on_no_match); | 59 Label* on_no_match); |
57 virtual void CheckNotRegistersEqual(int reg1, int reg2, Label* on_not_equal); | 60 virtual void CheckNotRegistersEqual(int reg1, int reg2, Label* on_not_equal); |
58 virtual void CheckNotCharacter(uc16 c, Label* on_not_equal); | 61 virtual void CheckNotCharacter(uint32_t c, Label* on_not_equal); |
59 virtual void CheckNotCharacterAfterOr(uc16 c, | 62 virtual void CheckNotCharacterAfterAnd(uint32_t c, |
60 uc16 or_with, | 63 uint32_t and_with, |
61 Label* on_not_equal); | 64 Label* on_not_equal); |
62 virtual void CheckNotCharacterAfterMinusOr(uc16 c, | 65 virtual void CheckNotCharacterAfterMinusAnd(uc16 c, |
63 uc16 minus_then_or_with, | 66 uc16 minus, |
64 Label* on_not_equal); | 67 uc16 and_with, |
| 68 Label* on_not_equal); |
65 virtual void DispatchByteMap( | 69 virtual void DispatchByteMap( |
66 uc16 start, | 70 uc16 start, |
67 Label* byte_map, | 71 Label* byte_map, |
68 const Vector<Label*>& destinations); | 72 const Vector<Label*>& destinations); |
69 virtual void DispatchHalfNibbleMap( | 73 virtual void DispatchHalfNibbleMap( |
70 uc16 start, | 74 uc16 start, |
71 Label* half_nibble_map, | 75 Label* half_nibble_map, |
72 const Vector<Label*>& destinations); | 76 const Vector<Label*>& destinations); |
73 virtual void DispatchHighByteMap( | 77 virtual void DispatchHighByteMap( |
74 byte start, | 78 byte start, |
75 Label* byte_map, | 79 Label* byte_map, |
76 const Vector<Label*>& destinations); | 80 const Vector<Label*>& destinations); |
77 virtual void EmitOrLink(Label* label); | 81 virtual void EmitOrLink(Label* label); |
78 virtual void Fail(); | 82 virtual void Fail(); |
79 virtual Handle<Object> GetCode(Handle<String> source); | 83 virtual Handle<Object> GetCode(Handle<String> source); |
80 virtual void GoTo(Label* label); | 84 virtual void GoTo(Label* label); |
81 virtual void IfRegisterGE(int reg, int comparand, Label* if_ge); | 85 virtual void IfRegisterGE(int reg, int comparand, Label* if_ge); |
82 virtual void IfRegisterLT(int reg, int comparand, Label* if_lt); | 86 virtual void IfRegisterLT(int reg, int comparand, Label* if_lt); |
83 virtual IrregexpImplementation Implementation(); | 87 virtual IrregexpImplementation Implementation(); |
84 virtual void LoadCurrentCharacter(int cp_offset, Label* on_end_of_input); | 88 virtual void LoadCurrentCharacter(int cp_offset, |
85 virtual void LoadCurrentCharacterUnchecked(int cp_offset); | 89 Label* on_end_of_input, |
| 90 bool check_bounds = true, |
| 91 int characters = 1); |
86 virtual void PopCurrentPosition(); | 92 virtual void PopCurrentPosition(); |
87 virtual void PopRegister(int register_index); | 93 virtual void PopRegister(int register_index); |
88 virtual void PushBacktrack(Label* label); | 94 virtual void PushBacktrack(Label* label); |
89 virtual void PushCurrentPosition(); | 95 virtual void PushCurrentPosition(); |
90 virtual void PushRegister(int register_index); | 96 virtual void PushRegister(int register_index); |
91 virtual void ReadCurrentPositionFromRegister(int reg); | 97 virtual void ReadCurrentPositionFromRegister(int reg); |
92 virtual void ReadStackPointerFromRegister(int reg); | 98 virtual void ReadStackPointerFromRegister(int reg); |
93 virtual void SetRegister(int register_index, int to); | 99 virtual void SetRegister(int register_index, int to); |
94 virtual void Succeed(); | 100 virtual void Succeed(); |
95 virtual void WriteCurrentPositionToRegister(int reg, int cp_offset); | 101 virtual void WriteCurrentPositionToRegister(int reg, int cp_offset); |
96 virtual void WriteStackPointerToRegister(int reg); | 102 virtual void WriteStackPointerToRegister(int reg); |
97 private: | 103 private: |
98 RegExpMacroAssembler* assembler_; | 104 RegExpMacroAssembler* assembler_; |
99 }; | 105 }; |
100 | 106 |
101 }} // namespace v8::internal | 107 }} // namespace v8::internal |
102 | 108 |
103 #endif // REGEXP_MACRO_ASSEMBLER_TRACER_H_ | 109 #endif // REGEXP_MACRO_ASSEMBLER_TRACER_H_ |
OLD | NEW |