| Index: src/regexp/jsregexp.h
|
| diff --git a/src/regexp/jsregexp.h b/src/regexp/jsregexp.h
|
| index 8bc814f40ff29489a439c426ee780f3bb7ebe4e1..0ad4b79c873f8982c221b214b1c0f21a93e3a623 100644
|
| --- a/src/regexp/jsregexp.h
|
| +++ b/src/regexp/jsregexp.h
|
| @@ -7,6 +7,7 @@
|
|
|
| #include "src/allocation.h"
|
| #include "src/assembler.h"
|
| +#include "src/regexp/regexp-ast.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -226,63 +227,6 @@ enum ElementInSetsRelation {
|
| };
|
|
|
|
|
| -// Represents code units in the range from from_ to to_, both ends are
|
| -// inclusive.
|
| -class CharacterRange {
|
| - public:
|
| - CharacterRange() : from_(0), to_(0) { }
|
| - // For compatibility with the CHECK_OK macro
|
| - CharacterRange(void* null) { DCHECK_NULL(null); } // NOLINT
|
| - CharacterRange(uc16 from, uc16 to) : from_(from), to_(to) { }
|
| - static void AddClassEscape(uc16 type, ZoneList<CharacterRange>* ranges,
|
| - Zone* zone);
|
| - static Vector<const int> GetWordBounds();
|
| - static inline CharacterRange Singleton(uc16 value) {
|
| - return CharacterRange(value, value);
|
| - }
|
| - static inline CharacterRange Range(uc16 from, uc16 to) {
|
| - DCHECK(from <= to);
|
| - return CharacterRange(from, to);
|
| - }
|
| - static inline CharacterRange Everything() {
|
| - return CharacterRange(0, 0xFFFF);
|
| - }
|
| - bool Contains(uc16 i) { return from_ <= i && i <= to_; }
|
| - uc16 from() const { return from_; }
|
| - void set_from(uc16 value) { from_ = value; }
|
| - uc16 to() const { return to_; }
|
| - void set_to(uc16 value) { to_ = value; }
|
| - bool is_valid() { return from_ <= to_; }
|
| - bool IsEverything(uc16 max) { return from_ == 0 && to_ >= max; }
|
| - bool IsSingleton() { return (from_ == to_); }
|
| - void AddCaseEquivalents(Isolate* isolate, Zone* zone,
|
| - ZoneList<CharacterRange>* ranges, bool is_one_byte);
|
| - static void Split(ZoneList<CharacterRange>* base,
|
| - Vector<const int> overlay,
|
| - ZoneList<CharacterRange>** included,
|
| - ZoneList<CharacterRange>** excluded,
|
| - Zone* zone);
|
| - // Whether a range list is in canonical form: Ranges ordered by from value,
|
| - // and ranges non-overlapping and non-adjacent.
|
| - static bool IsCanonical(ZoneList<CharacterRange>* ranges);
|
| - // Convert range list to canonical form. The characters covered by the ranges
|
| - // will still be the same, but no character is in more than one range, and
|
| - // adjacent ranges are merged. The resulting list may be shorter than the
|
| - // original, but cannot be longer.
|
| - static void Canonicalize(ZoneList<CharacterRange>* ranges);
|
| - // Negate the contents of a character range in canonical form.
|
| - static void Negate(ZoneList<CharacterRange>* src,
|
| - ZoneList<CharacterRange>* dst,
|
| - Zone* zone);
|
| - static const int kStartMarker = (1 << 24);
|
| - static const int kPayloadMask = (1 << 24) - 1;
|
| -
|
| - private:
|
| - uc16 from_;
|
| - uc16 to_;
|
| -};
|
| -
|
| -
|
| // A set of unsigned integers that behaves especially well on small
|
| // integers (< 32). May do zone-allocation.
|
| class OutSet: public ZoneObject {
|
| @@ -380,63 +324,6 @@ class DispatchTable : public ZoneObject {
|
| VISIT(Text)
|
|
|
|
|
| -#define FOR_EACH_REG_EXP_TREE_TYPE(VISIT) \
|
| - VISIT(Disjunction) \
|
| - VISIT(Alternative) \
|
| - VISIT(Assertion) \
|
| - VISIT(CharacterClass) \
|
| - VISIT(Atom) \
|
| - VISIT(Quantifier) \
|
| - VISIT(Capture) \
|
| - VISIT(Lookaround) \
|
| - VISIT(BackReference) \
|
| - VISIT(Empty) \
|
| - VISIT(Text)
|
| -
|
| -
|
| -#define FORWARD_DECLARE(Name) class RegExp##Name;
|
| -FOR_EACH_REG_EXP_TREE_TYPE(FORWARD_DECLARE)
|
| -#undef FORWARD_DECLARE
|
| -
|
| -
|
| -class TextElement final BASE_EMBEDDED {
|
| - public:
|
| - enum TextType {
|
| - ATOM,
|
| - CHAR_CLASS
|
| - };
|
| -
|
| - static TextElement Atom(RegExpAtom* atom);
|
| - static TextElement CharClass(RegExpCharacterClass* char_class);
|
| -
|
| - int cp_offset() const { return cp_offset_; }
|
| - void set_cp_offset(int cp_offset) { cp_offset_ = cp_offset; }
|
| - int length() const;
|
| -
|
| - TextType text_type() const { return text_type_; }
|
| -
|
| - RegExpTree* tree() const { return tree_; }
|
| -
|
| - RegExpAtom* atom() const {
|
| - DCHECK(text_type() == ATOM);
|
| - return reinterpret_cast<RegExpAtom*>(tree());
|
| - }
|
| -
|
| - RegExpCharacterClass* char_class() const {
|
| - DCHECK(text_type() == CHAR_CLASS);
|
| - return reinterpret_cast<RegExpCharacterClass*>(tree());
|
| - }
|
| -
|
| - private:
|
| - TextElement(TextType text_type, RegExpTree* tree)
|
| - : cp_offset_(-1), text_type_(text_type), tree_(tree) {}
|
| -
|
| - int cp_offset_;
|
| - TextType text_type_;
|
| - RegExpTree* tree_;
|
| -};
|
| -
|
| -
|
| class Trace;
|
| struct PreloadState;
|
| class GreedyLoopState;
|
| @@ -688,33 +575,6 @@ class RegExpNode: public ZoneObject {
|
| };
|
|
|
|
|
| -// A simple closed interval.
|
| -class Interval {
|
| - public:
|
| - Interval() : from_(kNone), to_(kNone) { }
|
| - Interval(int from, int to) : from_(from), to_(to) { }
|
| - Interval Union(Interval that) {
|
| - if (that.from_ == kNone)
|
| - return *this;
|
| - else if (from_ == kNone)
|
| - return that;
|
| - else
|
| - return Interval(Min(from_, that.from_), Max(to_, that.to_));
|
| - }
|
| - bool Contains(int value) {
|
| - return (from_ <= value) && (value <= to_);
|
| - }
|
| - bool is_empty() { return from_ == kNone; }
|
| - int from() const { return from_; }
|
| - int to() const { return to_; }
|
| - static Interval Empty() { return Interval(); }
|
| - static const int kNone = -1;
|
| - private:
|
| - int from_;
|
| - int to_;
|
| -};
|
| -
|
| -
|
| class SeqRegExpNode: public RegExpNode {
|
| public:
|
| explicit SeqRegExpNode(RegExpNode* on_success)
|
|
|