Lines Matching refs:node
48 void* VisitDisjunction(RegExpDisjunction* node, void*) override {
49 for (RegExpTree* alt : *node->alternatives()) {
58 void* VisitAlternative(RegExpAlternative* node, void*) override {
59 for (RegExpTree* child : *node->nodes()) {
68 void* VisitCharacterClass(RegExpCharacterClass* node, void*) override {
72 void* VisitAssertion(RegExpAssertion* node, void*) override {
76 void* VisitAtom(RegExpAtom* node, void*) override {
80 void* VisitText(RegExpText* node, void*) override {
81 for (TextElement& el : *node->elements()) {
90 void* VisitQuantifier(RegExpQuantifier* node, void*) override {
95 // `replication_factor_` keeps track of how often the current node will
103 if (node->min() > kMaxReplicationFactor ||
104 (node->max() != RegExpTree::kInfinity &&
105 node->max() > kMaxReplicationFactor)) {
115 if (node->max() == RegExpTree::kInfinity) {
116 local_replication = node->min() + 1;
118 local_replication = node->max();
127 switch (node->quantifier_type()) {
138 node->body()->Accept(this, nullptr);
143 void* VisitCapture(RegExpCapture* node, void*) override {
144 node->body()->Accept(this, nullptr);
148 void* VisitGroup(RegExpGroup* node, void*) override {
149 node->body()->Accept(this, nullptr);
153 void* VisitLookaround(RegExpLookaround* node, void*) override {
160 void* VisitBackReference(RegExpBackReference* node, void*) override {
166 void* VisitEmpty(RegExpEmpty* node, void*) override { return nullptr; }
369 void* VisitDisjunction(RegExpDisjunction* node, void*) override {
370 ZoneList<RegExpTree*>& alts = *node->alternatives();
376 void* VisitAlternative(RegExpAlternative* node, void*) override {
377 for (RegExpTree* child : *node->nodes()) {
383 void* VisitAssertion(RegExpAssertion* node, void*) override {
384 assembler_.Assertion(node->assertion_type());
388 void* VisitCharacterClass(RegExpCharacterClass* node, void*) override {
390 ZoneList<CharacterRange>* ranges = node->ranges(zone_);
392 if (node->is_negated()) {
422 void* VisitAtom(RegExpAtom* node, void*) override {
423 for (base::uc16 c : node->data()) {
548 void* VisitQuantifier(RegExpQuantifier* node, void*) override {
553 // the first 4 repetitions if node->min() >= 5, and then we don't have to
554 // clear registers in the first node->min() repetitions.
555 // Later, and if node->min() == 0, we don't have to clear registers before
557 Interval body_registers = node->body()->CaptureRegisters();
560 node->body()->Accept(this, nullptr);
564 for (int i = 0; i != node->min(); ++i) emit_body();
566 switch (node->quantifier_type()) {
570 if (node->max() == RegExpTree::kInfinity) {
573 DCHECK_NE(node->max(), RegExpTree::kInfinity);
574 CompileGreedyRepetition(emit_body, node->max() - node->min());
579 if (node->max() == RegExpTree::kInfinity) {
582 DCHECK_NE(node->max(), RegExpTree::kInfinity);
583 CompileNonGreedyRepetition(emit_body, node->max() - node->min());
590 void* VisitCapture(RegExpCapture* node, void*) override {
591 int index = node->index();
595 node->body()->Accept(this, nullptr);
600 void* VisitGroup(RegExpGroup* node, void*) override {
601 node->body()->Accept(this, nullptr);
605 void* VisitLookaround(RegExpLookaround* node, void*) override {
610 void* VisitBackReference(RegExpBackReference* node, void*) override {
614 void* VisitEmpty(RegExpEmpty* node, void*) override { return nullptr; }
616 void* VisitText(RegExpText* node, void*) override {
617 for (TextElement& text_el : *node->elements()) {