V8 Project
|
#include <jsregexp.h>
Classes | |
class | DeferredAction |
class | DeferredCapture |
class | DeferredClearCaptures |
class | DeferredIncrementRegister |
class | DeferredSetRegister |
Public Types | |
enum | TriBool { UNKNOWN = -1 , FALSE_VALUE = 0 , TRUE_VALUE = 1 } |
Public Member Functions | |
Trace () | |
void | Flush (RegExpCompiler *compiler, RegExpNode *successor) |
int | cp_offset () |
DeferredAction * | actions () |
bool | is_trivial () |
TriBool | at_start () |
void | set_at_start (bool at_start) |
Label * | backtrack () |
Label * | loop_label () |
RegExpNode * | stop_node () |
int | characters_preloaded () |
int | bound_checked_up_to () |
int | flush_budget () |
QuickCheckDetails * | quick_check_performed () |
bool | mentions_reg (int reg) |
bool | GetStoredPosition (int reg, int *cp_offset) |
void | add_action (DeferredAction *new_action) |
void | set_backtrack (Label *backtrack) |
void | set_stop_node (RegExpNode *node) |
void | set_loop_label (Label *label) |
void | set_characters_preloaded (int count) |
void | set_bound_checked_up_to (int to) |
void | set_flush_budget (int to) |
void | set_quick_check_performed (QuickCheckDetails *d) |
void | InvalidateCurrentCharacter () |
void | AdvanceCurrentPositionInTrace (int by, RegExpCompiler *compiler) |
Private Member Functions | |
int | FindAffectedRegisters (OutSet *affected_registers, Zone *zone) |
void | PerformDeferredActions (RegExpMacroAssembler *macro, int max_register, const OutSet &affected_registers, OutSet *registers_to_pop, OutSet *registers_to_clear, Zone *zone) |
void | RestoreAffectedRegisters (RegExpMacroAssembler *macro, int max_register, const OutSet ®isters_to_pop, const OutSet ®isters_to_clear) |
Private Attributes | |
int | cp_offset_ |
DeferredAction * | actions_ |
Label * | backtrack_ |
RegExpNode * | stop_node_ |
Label * | loop_label_ |
int | characters_preloaded_ |
int | bound_checked_up_to_ |
QuickCheckDetails | quick_check_performed_ |
int | flush_budget_ |
TriBool | at_start_ |
Definition at line 1356 of file jsregexp.h.
|
inline |
Definition at line 1419 of file jsregexp.h.
|
inline |
Definition at line 1436 of file jsregexp.h.
References actions_.
Referenced by v8::internal::ChoiceNode::Emit(), and v8::internal::ChoiceNode::EmitChoices().
|
inline |
Definition at line 1474 of file jsregexp.h.
References actions_, DCHECK, v8::internal::Trace::DeferredAction::next_, and NULL.
Referenced by v8::internal::ActionNode::Emit().
void v8::internal::Trace::AdvanceCurrentPositionInTrace | ( | int | by, |
RegExpCompiler * | compiler | ||
) |
Definition at line 3374 of file jsregexp.cc.
References v8::internal::QuickCheckDetails::Advance(), bound_checked_up_to_, characters_preloaded_, cp_offset_, DCHECK, v8::internal::RegExpMacroAssembler::kMaxCPOffset, v8::internal::Max(), v8::internal::RegExpCompiler::one_byte(), quick_check_performed_, and v8::internal::RegExpCompiler::SetRegExpTooBig().
Referenced by v8::internal::TextNode::Emit().
|
inline |
Definition at line 1456 of file jsregexp.h.
References at_start_.
Referenced by v8::internal::AssertionNode::Emit(), v8::internal::AssertionNode::EmitBoundaryCheck(), v8::internal::RegExpNode::EmitQuickCheck(), set_at_start(), and v8::internal::ChoiceNode::SetUpPreLoad().
|
inline |
Definition at line 1460 of file jsregexp.h.
References backtrack_.
Referenced by v8::internal::AssertionNode::BacktrackIfPrevious(), v8::internal::ActionNode::Emit(), v8::internal::AssertionNode::Emit(), v8::internal::BackReferenceNode::Emit(), v8::internal::EndNode::Emit(), v8::internal::ChoiceNode::EmitChoices(), v8::internal::ChoiceNode::EmitGreedyLoop(), v8::internal::EmitHat(), v8::internal::RegExpNode::EmitQuickCheck(), Flush(), v8::internal::ChoiceNode::GenerateGuard(), set_backtrack(), and v8::internal::TextNode::TextEmitPass().
|
inline |
Definition at line 1464 of file jsregexp.h.
References bound_checked_up_to_.
Referenced by v8::internal::TextNode::Emit().
|
inline |
Definition at line 1463 of file jsregexp.h.
References characters_preloaded_.
Referenced by v8::internal::TextNode::Emit(), v8::internal::AssertionNode::EmitBoundaryCheck(), v8::internal::RegExpNode::EmitQuickCheck(), and v8::internal::ChoiceNode::SetUpPreLoad().
|
inline |
Definition at line 1435 of file jsregexp.h.
References cp_offset_.
Referenced by v8::internal::AssertionNode::BacktrackIfPrevious(), v8::internal::ActionNode::Emit(), v8::internal::TextNode::Emit(), v8::internal::AssertionNode::Emit(), v8::internal::LoopChoiceNode::Emit(), v8::internal::EmitAtomLetter(), v8::internal::EmitAtomNonLetter(), v8::internal::AssertionNode::EmitBoundaryCheck(), v8::internal::EmitCharClass(), v8::internal::EmitHat(), v8::internal::ChoiceNode::EmitOutOfLineContinuation(), v8::internal::RegExpNode::EmitQuickCheck(), v8::internal::EmitSimpleCharacter(), GetStoredPosition(), and v8::internal::TextNode::TextEmitPass().
Definition at line 1182 of file jsregexp.cc.
References actions_, v8::internal::ActionNode::CLEAR_CAPTURES, v8::internal::Interval::from(), v8::internal::RegExpCompiler::kNoRegister, NULL, v8::internal::OutSet::Set(), and v8::internal::Interval::to().
Referenced by Flush().
void v8::internal::Trace::Flush | ( | RegExpCompiler * | compiler, |
RegExpNode * | successor | ||
) |
Definition at line 1353 of file jsregexp.cc.
References actions_, v8::internal::RegExpMacroAssembler::AdvanceCurrentPosition(), backtrack(), v8::internal::RegExpMacroAssembler::Backtrack(), v8::internal::RegExpMacroAssembler::Bind(), cp_offset_, DCHECK, v8::internal::RegExpNode::Emit(), FindAffectedRegisters(), v8::internal::RegExpMacroAssembler::GoTo(), is_trivial(), v8::internal::RegExpCompiler::macro_assembler(), NULL, PerformDeferredActions(), v8::internal::RegExpMacroAssembler::PopCurrentPosition(), v8::internal::RegExpMacroAssembler::PushBacktrack(), v8::internal::RegExpMacroAssembler::PushCurrentPosition(), RestoreAffectedRegisters(), and v8::internal::RegExpCompiler::zone().
Referenced by v8::internal::ActionNode::Emit(), v8::internal::BackReferenceNode::Emit(), v8::internal::EndNode::Emit(), v8::internal::ChoiceNode::Emit(), v8::internal::LoopChoiceNode::Emit(), and v8::internal::RegExpNode::LimitVersions().
|
inline |
Definition at line 1465 of file jsregexp.h.
References flush_budget_.
Referenced by v8::internal::ChoiceNode::Emit(), and v8::internal::ChoiceNode::EmitChoices().
Definition at line 1164 of file jsregexp.cc.
References actions_, cp_offset(), DCHECK_EQ, NULL, and v8::internal::ActionNode::STORE_POSITION.
Referenced by v8::internal::ActionNode::Emit().
void v8::internal::Trace::InvalidateCurrentCharacter | ( | ) |
Definition at line 3369 of file jsregexp.cc.
References characters_preloaded_.
Referenced by v8::internal::AssertionNode::BacktrackIfPrevious(), v8::internal::ChoiceNode::EmitChoices(), and v8::internal::EmitHat().
|
inline |
Definition at line 1447 of file jsregexp.h.
References actions_, at_start_, backtrack_, bound_checked_up_to_, v8::internal::QuickCheckDetails::characters(), characters_preloaded_, cp_offset_, NULL, quick_check_performed_, and UNKNOWN.
Referenced by v8::internal::ActionNode::Emit(), v8::internal::BackReferenceNode::Emit(), v8::internal::EndNode::Emit(), v8::internal::LoopChoiceNode::Emit(), v8::internal::ChoiceNode::EmitOptimizedUnanchoredSearch(), Flush(), and v8::internal::RegExpNode::LimitVersions().
|
inline |
Definition at line 1461 of file jsregexp.h.
References loop_label_.
Referenced by v8::internal::LoopChoiceNode::Emit().
Definition at line 1153 of file jsregexp.cc.
References actions_, and NULL.
Referenced by v8::internal::ChoiceNode::AssertGuardsMentionRegisters(), and v8::internal::ChoiceNode::GenerateGuard().
|
private |
Definition at line 1220 of file jsregexp.cc.
References actions_, v8::internal::RegExpMacroAssembler::AdvanceRegister(), v8::internal::ActionNode::CLEAR_CAPTURES, v8::internal::RegExpMacroAssembler::ClearRegisters(), DCHECK, DCHECK_EQ, v8::internal::OutSet::Get(), v8::internal::ActionNode::INCREMENT_REGISTER, v8::internal::RegExpMacroAssembler::kCheckStackLimit, v8::internal::RegExpMacroAssembler::kNoStackLimitCheck, NULL, v8::internal::pc, v8::internal::RegExpMacroAssembler::PushRegister(), v8::internal::OutSet::Set(), v8::internal::ActionNode::SET_REGISTER, v8::internal::RegExpMacroAssembler::SetRegister(), v8::internal::RegExpMacroAssembler::stack_limit_slack(), v8::internal::ActionNode::STORE_POSITION, UNREACHABLE, v8::internal::Trace::DeferredSetRegister::value(), and v8::internal::RegExpMacroAssembler::WriteCurrentPositionToRegister().
Referenced by Flush().
|
inline |
Definition at line 1466 of file jsregexp.h.
References quick_check_performed_.
Referenced by v8::internal::ChoiceNode::EmitChoices(), and v8::internal::TextNode::TextEmitPass().
|
private |
Definition at line 1202 of file jsregexp.cc.
References v8::internal::RegExpMacroAssembler::ClearRegisters(), v8::internal::OutSet::Get(), and v8::internal::RegExpMacroAssembler::PopRegister().
Referenced by Flush().
|
inline |
Definition at line 1457 of file jsregexp.h.
References at_start(), at_start_, FALSE_VALUE, and TRUE_VALUE.
Referenced by v8::internal::TextNode::Emit(), v8::internal::AssertionNode::Emit(), v8::internal::ChoiceNode::EmitChoices(), v8::internal::ChoiceNode::EmitGreedyLoop(), v8::internal::ChoiceNode::EmitOutOfLineContinuation(), and v8::internal::GreedyLoopState::GreedyLoopState().
|
inline |
Definition at line 1479 of file jsregexp.h.
References backtrack(), and backtrack_.
Referenced by v8::internal::ActionNode::Emit(), v8::internal::ChoiceNode::EmitChoices(), v8::internal::ChoiceNode::EmitGreedyLoop(), v8::internal::ChoiceNode::EmitOutOfLineContinuation(), and v8::internal::GreedyLoopState::GreedyLoopState().
|
inline |
Definition at line 1483 of file jsregexp.h.
References bound_checked_up_to_, and to().
Referenced by v8::internal::ChoiceNode::EmitChoices().
|
inline |
Definition at line 1482 of file jsregexp.h.
References characters_preloaded_.
Referenced by v8::internal::ChoiceNode::EmitChoices(), and v8::internal::ChoiceNode::EmitOutOfLineContinuation().
|
inline |
Definition at line 1484 of file jsregexp.h.
References flush_budget_, and to().
Referenced by v8::internal::ChoiceNode::Emit(), and v8::internal::ChoiceNode::EmitChoices().
|
inline |
Definition at line 1481 of file jsregexp.h.
References loop_label_.
Referenced by v8::internal::ChoiceNode::EmitGreedyLoop().
|
inline |
Definition at line 1485 of file jsregexp.h.
References quick_check_performed_.
Referenced by v8::internal::ChoiceNode::EmitChoices(), and v8::internal::ChoiceNode::EmitOutOfLineContinuation().
|
inline |
Definition at line 1480 of file jsregexp.h.
References stop_node_.
Referenced by v8::internal::ChoiceNode::EmitGreedyLoop().
|
inline |
Definition at line 1462 of file jsregexp.h.
References stop_node_.
Referenced by v8::internal::LoopChoiceNode::Emit(), v8::internal::ChoiceNode::EmitGreedyLoop(), and v8::internal::RegExpNode::LimitVersions().
|
private |
Definition at line 1504 of file jsregexp.h.
Referenced by actions(), add_action(), FindAffectedRegisters(), Flush(), GetStoredPosition(), is_trivial(), mentions_reg(), and PerformDeferredActions().
|
private |
Definition at line 1512 of file jsregexp.h.
Referenced by at_start(), is_trivial(), and set_at_start().
|
private |
Definition at line 1505 of file jsregexp.h.
Referenced by backtrack(), is_trivial(), and set_backtrack().
|
private |
Definition at line 1509 of file jsregexp.h.
Referenced by AdvanceCurrentPositionInTrace(), bound_checked_up_to(), is_trivial(), and set_bound_checked_up_to().
|
private |
Definition at line 1508 of file jsregexp.h.
Referenced by AdvanceCurrentPositionInTrace(), characters_preloaded(), InvalidateCurrentCharacter(), is_trivial(), and set_characters_preloaded().
|
private |
Definition at line 1503 of file jsregexp.h.
Referenced by AdvanceCurrentPositionInTrace(), cp_offset(), Flush(), and is_trivial().
|
private |
Definition at line 1511 of file jsregexp.h.
Referenced by flush_budget(), and set_flush_budget().
|
private |
Definition at line 1507 of file jsregexp.h.
Referenced by loop_label(), and set_loop_label().
|
private |
Definition at line 1510 of file jsregexp.h.
Referenced by AdvanceCurrentPositionInTrace(), is_trivial(), quick_check_performed(), and set_quick_check_performed().
|
private |
Definition at line 1506 of file jsregexp.h.
Referenced by set_stop_node(), and stop_node().