V8 Project
|
#include <jsregexp.h>
Public Types | |
enum | ActionType { SET_REGISTER , INCREMENT_REGISTER , STORE_POSITION , BEGIN_SUBMATCH , POSITIVE_SUBMATCH_SUCCESS , EMPTY_MATCH_CHECK , CLEAR_CAPTURES } |
Public Member Functions | |
virtual void | Accept (NodeVisitor *visitor) |
virtual void | Emit (RegExpCompiler *compiler, Trace *trace) |
virtual int | EatsAtLeast (int still_to_find, int budget, bool not_at_start) |
virtual void | GetQuickCheckDetails (QuickCheckDetails *details, RegExpCompiler *compiler, int filled_in, bool not_at_start) |
virtual void | FillInBMInfo (int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start) |
ActionType | action_type () |
virtual int | GreedyLoopTextLength () |
![]() | |
SeqRegExpNode (RegExpNode *on_success) | |
RegExpNode * | on_success () |
void | set_on_success (RegExpNode *node) |
virtual RegExpNode * | FilterOneByte (int depth, bool ignore_case) |
![]() | |
RegExpNode (Zone *zone) | |
virtual | ~RegExpNode () |
bool | EmitQuickCheck (RegExpCompiler *compiler, Trace *bounds_check_trace, Trace *trace, bool preload_has_checked_bounds, Label *on_possible_success, QuickCheckDetails *details_return, bool fall_through_on_failure) |
virtual RegExpNode * | GetSuccessorOfOmnivorousTextNode (RegExpCompiler *compiler) |
RegExpNode * | replacement () |
RegExpNode * | set_replacement (RegExpNode *replacement) |
void | SaveBMInfo (BoyerMooreLookahead *bm, bool not_at_start, int offset) |
Label * | label () |
NodeInfo * | info () |
BoyerMooreLookahead * | bm_info (bool not_at_start) |
Zone * | zone () const |
![]() | |
INLINE (void *operator new(size_t size, Zone *zone)) | |
void | operator delete (void *, size_t) |
void | operator delete (void *pointer, Zone *zone) |
Static Public Member Functions | |
static ActionNode * | SetRegister (int reg, int val, RegExpNode *on_success) |
static ActionNode * | IncrementRegister (int reg, RegExpNode *on_success) |
static ActionNode * | StorePosition (int reg, bool is_capture, RegExpNode *on_success) |
static ActionNode * | ClearCaptures (Interval range, RegExpNode *on_success) |
static ActionNode * | BeginSubmatch (int stack_pointer_reg, int position_reg, RegExpNode *on_success) |
static ActionNode * | PositiveSubmatchSuccess (int stack_pointer_reg, int restore_reg, int clear_capture_count, int clear_capture_from, RegExpNode *on_success) |
static ActionNode * | EmptyMatchCheck (int start_register, int repetition_register, int repetition_limit, RegExpNode *on_success) |
Private Member Functions | |
ActionNode (ActionType action_type, RegExpNode *on_success) | |
Private Attributes | |
union { | |
struct { | |
int reg | |
int value | |
} u_store_register | |
struct { | |
int reg | |
} u_increment_register | |
struct { | |
int reg | |
bool is_capture | |
} u_position_register | |
struct { | |
int stack_pointer_register | |
int current_position_register | |
int clear_register_count | |
int clear_register_from | |
} u_submatch | |
struct { | |
int start_register | |
int repetition_register | |
int repetition_limit | |
} u_empty_match_check | |
struct { | |
int range_from | |
int range_to | |
} u_clear_captures | |
} | data_ |
ActionType | action_type_ |
Friends | |
class | DotPrinter |
Additional Inherited Members | |
![]() | |
static const int | kNodeIsTooComplexForGreedyLoops = -1 |
static const int | kRecursionBudget = 200 |
static const int | kMaxCopiesCodeGenerated = 10 |
![]() | |
enum | LimitResult { DONE , CONTINUE } |
![]() | |
RegExpNode * | FilterSuccessor (int depth, bool ignore_case) |
![]() | |
LimitResult | LimitVersions (RegExpCompiler *compiler, Trace *trace) |
void | set_bm_info (bool not_at_start, BoyerMooreLookahead *bm) |
![]() | |
RegExpNode * | replacement_ |
Definition at line 746 of file jsregexp.h.
Enumerator | |
---|---|
SET_REGISTER | |
INCREMENT_REGISTER | |
STORE_POSITION | |
BEGIN_SUBMATCH | |
POSITIVE_SUBMATCH_SUCCESS | |
EMPTY_MATCH_CHECK | |
CLEAR_CAPTURES |
Definition at line 748 of file jsregexp.h.
|
inlineprivate |
Definition at line 822 of file jsregexp.h.
|
virtual |
Implements v8::internal::RegExpNode.
|
inline |
|
static |
Definition at line 1512 of file jsregexp.cc.
References data_, u_submatch, and v8::internal::RegExpNode::zone().
|
static |
Definition at line 1502 of file jsregexp.cc.
References data_, v8::internal::Interval::from(), v8::internal::Interval::to(), u_clear_captures, and v8::internal::RegExpNode::zone().
|
virtual |
Implements v8::internal::RegExpNode.
Definition at line 2273 of file jsregexp.cc.
|
virtual |
Implements v8::internal::RegExpNode.
Definition at line 4234 of file jsregexp.cc.
References action_type_, v8::internal::Trace::add_action(), v8::internal::Trace::backtrack(), v8::internal::RegExpMacroAssembler::Backtrack(), BEGIN_SUBMATCH, v8::internal::RegExpMacroAssembler::Bind(), CLEAR_CAPTURES, clear_register_count, v8::internal::RegExpMacroAssembler::ClearRegisters(), v8::internal::RegExpNode::CONTINUE, v8::internal::Trace::cp_offset(), data_, DCHECK, v8::internal::RegExpNode::DONE, v8::internal::RegExpNode::Emit(), EMPTY_MATCH_CHECK, v8::internal::Trace::Flush(), v8::internal::Trace::GetStoredPosition(), v8::internal::RegExpMacroAssembler::GoTo(), v8::internal::RegExpMacroAssembler::IfRegisterEqPos(), v8::internal::RegExpMacroAssembler::IfRegisterLT(), INCREMENT_REGISTER, v8::internal::Trace::is_trivial(), v8::internal::RegExpCompiler::kNoRegister, v8::internal::RegExpNode::LimitVersions(), v8::internal::RegExpCompiler::macro_assembler(), NULL, v8::internal::SeqRegExpNode::on_success(), POSITIVE_SUBMATCH_SUCCESS, v8::internal::RegExpMacroAssembler::ReadCurrentPositionFromRegister(), v8::internal::RegExpMacroAssembler::ReadStackPointerFromRegister(), v8::internal::Trace::set_backtrack(), SET_REGISTER, STORE_POSITION, UNREACHABLE, v8::internal::RegExpMacroAssembler::WriteCurrentPositionToRegister(), and v8::internal::RegExpMacroAssembler::WriteStackPointerToRegister().
|
static |
Definition at line 1538 of file jsregexp.cc.
References data_, u_empty_match_check, and v8::internal::RegExpNode::zone().
|
virtual |
Reimplemented from v8::internal::SeqRegExpNode.
Definition at line 2284 of file jsregexp.cc.
References v8::internal::BoyerMooreLookahead::SetRest().
|
inlinevirtual |
Implements v8::internal::RegExpNode.
Definition at line 778 of file jsregexp.h.
References v8::internal::RegExpNode::GetQuickCheckDetails(), and v8::internal::SeqRegExpNode::on_success().
|
inlinevirtual |
Reimplemented from v8::internal::RegExpNode.
Definition at line 791 of file jsregexp.h.
References v8::internal::RegExpNode::kNodeIsTooComplexForGreedyLoops.
|
static |
Definition at line 1483 of file jsregexp.cc.
References data_, u_increment_register, and v8::internal::RegExpNode::zone().
|
static |
Definition at line 1523 of file jsregexp.cc.
References data_, u_submatch, and v8::internal::RegExpNode::zone().
|
static |
Definition at line 1472 of file jsregexp.cc.
References data_, u_store_register, and v8::internal::RegExpNode::zone().
|
static |
Definition at line 1491 of file jsregexp.cc.
References data_, u_position_register, and v8::internal::RegExpNode::zone().
|
friend |
Definition at line 826 of file jsregexp.h.
|
private |
Definition at line 825 of file jsregexp.h.
Referenced by action_type(), and Emit().
int v8::internal::ActionNode::clear_register_count |
Definition at line 809 of file jsregexp.h.
Referenced by Emit().
int v8::internal::ActionNode::clear_register_from |
Definition at line 810 of file jsregexp.h.
int v8::internal::ActionNode::current_position_register |
Definition at line 808 of file jsregexp.h.
union { ... } v8::internal::ActionNode::data_ |
Referenced by BeginSubmatch(), ClearCaptures(), Emit(), EmptyMatchCheck(), IncrementRegister(), PositiveSubmatchSuccess(), SetRegister(), and StorePosition().
bool v8::internal::ActionNode::is_capture |
Definition at line 804 of file jsregexp.h.
int v8::internal::ActionNode::range_from |
Definition at line 818 of file jsregexp.h.
int v8::internal::ActionNode::range_to |
Definition at line 819 of file jsregexp.h.
int v8::internal::ActionNode::reg |
Definition at line 796 of file jsregexp.h.
int v8::internal::ActionNode::repetition_limit |
Definition at line 815 of file jsregexp.h.
int v8::internal::ActionNode::repetition_register |
Definition at line 814 of file jsregexp.h.
int v8::internal::ActionNode::stack_pointer_register |
Definition at line 807 of file jsregexp.h.
int v8::internal::ActionNode::start_register |
Definition at line 813 of file jsregexp.h.
struct { ... } v8::internal::ActionNode::u_clear_captures |
Referenced by ClearCaptures().
struct { ... } v8::internal::ActionNode::u_empty_match_check |
Referenced by EmptyMatchCheck().
struct { ... } v8::internal::ActionNode::u_increment_register |
Referenced by IncrementRegister().
struct { ... } v8::internal::ActionNode::u_position_register |
Referenced by StorePosition().
struct { ... } v8::internal::ActionNode::u_store_register |
Referenced by SetRegister().
struct { ... } v8::internal::ActionNode::u_submatch |
Referenced by BeginSubmatch(), and PositiveSubmatchSuccess().
int v8::internal::ActionNode::value |
Definition at line 797 of file jsregexp.h.