v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
regexp-macro-assembler-tracer.h
Go to the documentation of this file.
1// Copyright 2008 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_REGEXP_REGEXP_MACRO_ASSEMBLER_TRACER_H_
6#define V8_REGEXP_REGEXP_MACRO_ASSEMBLER_TRACER_H_
7
8#include "src/base/strings.h"
10
11namespace v8 {
12namespace internal {
13
14// Decorator on a RegExpMacroAssembler that write all calls.
16 public:
19 void AbortedCodeGeneration() override;
23 bool CanReadUnaligned() const override {
25 }
26 void AdvanceCurrentPosition(int by) override; // Signed cp change.
27 void AdvanceRegister(int reg, int by) override; // r[reg] += by.
28 void Backtrack() override;
29 void Bind(Label* label) override;
30 void CheckCharacter(unsigned c, Label* on_equal) override;
31 void CheckCharacterAfterAnd(unsigned c, unsigned and_with,
32 Label* on_equal) override;
33 void CheckCharacterGT(base::uc16 limit, Label* on_greater) override;
34 void CheckCharacterLT(base::uc16 limit, Label* on_less) override;
35 void CheckGreedyLoop(Label* on_tos_equals_current_position) override;
36 void CheckAtStart(int cp_offset, Label* on_at_start) override;
37 void CheckNotAtStart(int cp_offset, Label* on_not_at_start) override;
38 void CheckNotBackReference(int start_reg, bool read_backward,
39 Label* on_no_match) override;
40 void CheckNotBackReferenceIgnoreCase(int start_reg, bool read_backward,
41 bool unicode,
42 Label* on_no_match) override;
43 void CheckNotCharacter(unsigned c, Label* on_not_equal) override;
44 void CheckNotCharacterAfterAnd(unsigned c, unsigned and_with,
45 Label* on_not_equal) override;
47 base::uc16 and_with,
48 Label* on_not_equal) override;
50 Label* on_in_range) override;
52 Label* on_not_in_range) override;
54 Label* on_in_range) override;
56 Label* on_not_in_range) override;
57 void CheckBitInTable(Handle<ByteArray> table, Label* on_bit_set) override;
58 bool SkipUntilBitInTableUseSimd(int advance_by) override {
59 return assembler_->SkipUntilBitInTableUseSimd(advance_by);
60 }
61 void SkipUntilBitInTable(int cp_offset, Handle<ByteArray> table,
62 Handle<ByteArray> nibble_table,
63 int advance_by) override;
64 void CheckPosition(int cp_offset, Label* on_outside_input) override;
66 Label* on_no_match) override;
67 void Fail() override;
69 RegExpFlags flags) override;
70 void GoTo(Label* label) override;
71 void IfRegisterGE(int reg, int comparand, Label* if_ge) override;
72 void IfRegisterLT(int reg, int comparand, Label* if_lt) override;
73 void IfRegisterEqPos(int reg, Label* if_eq) override;
75 void LoadCurrentCharacterImpl(int cp_offset, Label* on_end_of_input,
76 bool check_bounds, int characters,
77 int eats_at_least) override;
78 void PopCurrentPosition() override;
79 void PopRegister(int register_index) override;
80 void PushBacktrack(Label* label) override;
81 void PushCurrentPosition() override;
82 void PushRegister(int register_index,
83 StackCheckFlag check_stack_limit) override;
84 void ReadCurrentPositionFromRegister(int reg) override;
85 void ReadStackPointerFromRegister(int reg) override;
86 void SetCurrentPositionFromEnd(int by) override;
87 void SetRegister(int register_index, int to) override;
88 bool Succeed() override;
89 void WriteCurrentPositionToRegister(int reg, int cp_offset) override;
90 void ClearRegisters(int reg_from, int reg_to) override;
91 void WriteStackPointerToRegister(int reg) override;
92
93 private:
95};
96
97} // namespace internal
98} // namespace v8
99
100#endif // V8_REGEXP_REGEXP_MACRO_ASSEMBLER_TRACER_H_
bool CheckCharacterInRangeArray(const ZoneList< CharacterRange > *ranges, Label *on_in_range) override
void IfRegisterGE(int reg, int comparand, Label *if_ge) override
void SetRegister(int register_index, int to) override
void CheckNotBackReferenceIgnoreCase(int start_reg, bool read_backward, bool unicode, Label *on_no_match) override
void CheckCharacterLT(base::uc16 limit, Label *on_less) override
void WriteCurrentPositionToRegister(int reg, int cp_offset) override
void CheckCharacterAfterAnd(unsigned c, unsigned and_with, Label *on_equal) override
void CheckNotAtStart(int cp_offset, Label *on_not_at_start) override
void ClearRegisters(int reg_from, int reg_to) override
void CheckPosition(int cp_offset, Label *on_outside_input) override
bool CheckCharacterNotInRangeArray(const ZoneList< CharacterRange > *ranges, Label *on_not_in_range) override
void CheckNotCharacterAfterMinusAnd(base::uc16 c, base::uc16 minus, base::uc16 and_with, Label *on_not_equal) override
void CheckCharacterInRange(base::uc16 from, base::uc16 to, Label *on_in_range) override
RegExpMacroAssemblerTracer(Isolate *isolate, RegExpMacroAssembler *assembler)
void CheckCharacterGT(base::uc16 limit, Label *on_greater) override
void CheckAtStart(int cp_offset, Label *on_at_start) override
void CheckNotBackReference(int start_reg, bool read_backward, Label *on_no_match) override
void IfRegisterEqPos(int reg, Label *if_eq) override
void CheckNotCharacterAfterAnd(unsigned c, unsigned and_with, Label *on_not_equal) override
void CheckCharacterNotInRange(base::uc16 from, base::uc16 to, Label *on_not_in_range) override
DirectHandle< HeapObject > GetCode(DirectHandle< String > source, RegExpFlags flags) override
void PushRegister(int register_index, StackCheckFlag check_stack_limit) override
void CheckGreedyLoop(Label *on_tos_equals_current_position) override
void CheckBitInTable(Handle< ByteArray > table, Label *on_bit_set) override
void CheckNotCharacter(unsigned c, Label *on_not_equal) override
void CheckCharacter(unsigned c, Label *on_equal) override
void SkipUntilBitInTable(int cp_offset, Handle< ByteArray > table, Handle< ByteArray > nibble_table, int advance_by) override
void LoadCurrentCharacterImpl(int cp_offset, Label *on_end_of_input, bool check_bounds, int characters, int eats_at_least) override
void IfRegisterLT(int reg, int comparand, Label *if_lt) override
bool CheckSpecialClassRanges(StandardCharacterSet type, Label *on_no_match) override
virtual int stack_limit_slack_slot_count()=0
virtual bool CanReadUnaligned() const =0
virtual bool SkipUntilBitInTableUseSimd(int advance_by)
Label label
LiftoffRegister reg
uint16_t uc16
Definition strings.h:18