17 class RegExpMacroAssembler;
20 class BoyerMooreLookahead;
26 #ifdef V8_INTERPRETED_REGEXP
66 int capture_register_count);
300 bool Get(
unsigned value)
const;
307 void Set(
unsigned value,
Zone* zone);
367 template <
typename Callback>
369 return tree()->ForEach(callback);
382 #define FOR_EACH_NODE_TYPE(VISIT) \
386 VISIT(BackReference) \
391 #define FOR_EACH_REG_EXP_TREE_TYPE(VISIT) \
395 VISIT(CharacterClass) \
400 VISIT(BackReference) \
405 #define FORWARD_DECLARE(Name) class RegExp##Name;
407 #undef FORWARD_DECLARE
417 static TextElement
Atom(RegExpAtom* atom);
418 static TextElement
CharClass(RegExpCharacterClass* char_class);
429 DCHECK(text_type() == ATOM);
430 return reinterpret_cast<RegExpAtom*
>(tree());
434 DCHECK(text_type() == CHAR_CLASS);
435 return reinterpret_cast<RegExpCharacterClass*
>(tree());
440 : cp_offset_(-1), text_type_(text_type), tree_(tree) {}
534 void Advance(
int by,
bool one_byte);
588 virtual int EatsAtLeast(
int still_to_find,
int budget,
bool not_at_start) = 0;
593 Trace* bounds_check_trace,
595 bool preload_has_checked_bounds,
596 Label* on_possible_success,
598 bool fall_through_on_failure);
605 int characters_filled_in,
606 bool not_at_start) = 0;
665 return bm_info_[not_at_start ? 1 : 0];
677 bm_info_[not_at_start ? 1 : 0] = bm;
710 return (
from_ <= value) && (value <=
to_);
768 int clear_capture_count,
769 int clear_capture_from,
777 virtual int EatsAtLeast(
int still_to_find,
int budget,
bool not_at_start);
783 details, compiler, filled_in, not_at_start);
844 virtual int EatsAtLeast(
int still_to_find,
int budget,
bool not_at_start);
847 int characters_filled_in,
869 static bool SkipPass(
int pass,
bool ignore_case);
876 bool first_element_checked,
909 virtual int EatsAtLeast(
int still_to_find,
int budget,
bool not_at_start);
949 int characters_filled_in,
973 bool not_at_start) {
return 0; }
976 int characters_filled_in,
998 int clear_capture_count,
999 int clear_capture_start,
1074 int characters_filled_in,
1105 int preload_characters,
1106 bool next_expects_preload);
1108 Trace* current_trace,
1143 int characters_filled_in,
1179 int characters_filled_in,
1246 Interval new_range);
1270 void Set(
int character);
1295 return bitmaps_->at(map_number)->map_count();
1300 void Set(
int map_number,
int character) {
1303 info->
Set(character);
1317 bitmaps_->at(map_number)->SetAll();
1341 int max_number_of_chars,
int old_biggest_points,
int* from,
int*
to);
1495 const OutSet& affected_registers,
1496 OutSet* registers_to_pop,
1497 OutSet* registers_to_clear,
1501 const OutSet& registers_to_pop,
1502 const OutSet& registers_to_clear);
1544 #define DECLARE_VISIT(Type) \
1545 virtual void Visit##Type(Type##Node* that) = 0;
1547 #undef DECLARE_VISIT
1571 #define DECLARE_VISIT(Type) \
1572 virtual void Visit##Type(Type##Node* that);
1574 #undef DECLARE_VISIT
1607 #define DECLARE_VISIT(Type) \
1608 virtual void Visit##Type(Type##Node* that);
1610 #undef DECLARE_VISIT
1652 code(isolate->heap()->the_hole_value()),
1664 bool global,
bool multiline,
bool sticky,
1667 bool is_one_byte,
Zone* zone);
virtual void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
struct v8::internal::ActionNode::@22::@28 u_clear_captures
struct v8::internal::ActionNode::@22::@23 u_store_register
static ActionNode * EmptyMatchCheck(int start_register, int repetition_register, int repetition_limit, RegExpNode *on_success)
int stack_pointer_register
virtual int GreedyLoopTextLength()
ActionNode(ActionType action_type, RegExpNode *on_success)
int current_position_register
union v8::internal::ActionNode::@22 data_
static ActionNode * StorePosition(int reg, bool is_capture, 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 * SetRegister(int reg, int val, RegExpNode *on_success)
virtual int EatsAtLeast(int still_to_find, int budget, bool not_at_start)
@ POSITIVE_SUBMATCH_SUCCESS
virtual void GetQuickCheckDetails(QuickCheckDetails *details, RegExpCompiler *compiler, int filled_in, bool not_at_start)
static ActionNode * IncrementRegister(int reg, RegExpNode *on_success)
virtual void Accept(NodeVisitor *visitor)
struct v8::internal::ActionNode::@22::@25 u_position_register
struct v8::internal::ActionNode::@22::@24 u_increment_register
struct v8::internal::ActionNode::@22::@27 u_empty_match_check
static ActionNode * ClearCaptures(Interval range, RegExpNode *on_success)
virtual void Emit(RegExpCompiler *compiler, Trace *trace)
struct v8::internal::ActionNode::@22::@26 u_submatch
DISALLOW_IMPLICIT_CONSTRUCTORS(Analysis)
Analysis(bool ignore_case, bool is_one_byte)
const char * error_message()
void EnsureAnalyzed(RegExpNode *node)
virtual void VisitLoopChoice(LoopChoiceNode *that)
const char * error_message_
void fail(const char *error_message)
virtual void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
virtual int EatsAtLeast(int still_to_find, int budget, bool not_at_start)
virtual void Emit(RegExpCompiler *compiler, Trace *trace)
AssertionNode(AssertionType t, RegExpNode *on_success)
AssertionType assertion_type()
void EmitBoundaryCheck(RegExpCompiler *compiler, Trace *trace)
static AssertionNode * AtEnd(RegExpNode *on_success)
virtual void Accept(NodeVisitor *visitor)
AssertionType assertion_type_
static AssertionNode * AfterNewline(RegExpNode *on_success)
static AssertionNode * AtBoundary(RegExpNode *on_success)
static AssertionNode * AtStart(RegExpNode *on_success)
void BacktrackIfPrevious(RegExpCompiler *compiler, Trace *trace, IfPrevious backtrack_if_previous)
static AssertionNode * AtNonBoundary(RegExpNode *on_success)
virtual void GetQuickCheckDetails(QuickCheckDetails *details, RegExpCompiler *compiler, int filled_in, bool not_at_start)
TextElement(TextType text_type, RegExpTree *tree)
static TextElement Atom(RegExpAtom *atom)
static TextElement CharClass(RegExpCharacterClass *char_class)
TextType text_type() const
RegExpTree * tree() const
RegExpCharacterClass * char_class() const
RegExpAtom * atom() const
void set_cp_offset(int cp_offset)
virtual void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
virtual void Emit(RegExpCompiler *compiler, Trace *trace)
virtual void GetQuickCheckDetails(QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start)
virtual int EatsAtLeast(int still_to_find, int recursion_depth, bool not_at_start)
BackReferenceNode(int start_reg, int end_reg, RegExpNode *on_success)
virtual void Accept(NodeVisitor *visitor)
int GetSkipTable(int min_lookahead, int max_lookahead, Handle< ByteArray > boolean_skip_table)
void SetInterval(int map_number, const Interval &interval)
ZoneList< BoyerMoorePositionInfo * > * bitmaps_
void SetAll(int map_number)
int Count(int map_number)
RegExpCompiler * compiler_
BoyerMoorePositionInfo * at(int i)
void SetRest(int from_map)
RegExpCompiler * compiler()
BoyerMooreLookahead(int length, RegExpCompiler *compiler, Zone *zone)
bool FindWorthwhileInterval(int *from, int *to)
int FindBestInterval(int max_number_of_chars, int old_biggest_points, int *from, int *to)
void EmitSkipInstructions(RegExpMacroAssembler *masm)
void Set(int map_number, int character)
void SetInterval(const Interval &interval)
static const int kMapSize
BoyerMoorePositionInfo(Zone *zone)
ContainedInLattice surrogate_
static void Split(ZoneList< CharacterRange > *base, Vector< const int > overlay, ZoneList< CharacterRange > **included, ZoneList< CharacterRange > **excluded, Zone *zone)
static CharacterRange Range(uc16 from, uc16 to)
static void Canonicalize(ZoneList< CharacterRange > *ranges)
CharacterRange(void *null)
void set_from(uc16 value)
CharacterRange(uc16 from, uc16 to)
void AddCaseEquivalents(ZoneList< CharacterRange > *ranges, bool is_one_byte, Zone *zone)
static Vector< const int > GetWordBounds()
static CharacterRange Singleton(uc16 value)
static void Negate(ZoneList< CharacterRange > *src, ZoneList< CharacterRange > *dst, Zone *zone)
static const int kPayloadMask
static bool IsCanonical(ZoneList< CharacterRange > *ranges)
static CharacterRange Everything()
bool IsEverything(uc16 max)
static void AddClassEscape(uc16 type, ZoneList< CharacterRange > *ranges, Zone *zone)
static const int kStartMarker
ChoiceNode(int expected_size, Zone *zone)
int EmitOptimizedUnanchoredSearch(RegExpCompiler *compiler, Trace *trace)
DispatchTable * GetTable(bool ignore_case)
ZoneList< GuardedAlternative > * alternatives()
ZoneList< GuardedAlternative > * alternatives_
void AddAlternative(GuardedAlternative node)
int GreedyLoopTextLengthForAlternative(GuardedAlternative *alternative)
int CalculatePreloadCharacters(RegExpCompiler *compiler, int eats_at_least)
virtual void Accept(NodeVisitor *visitor)
Trace * EmitGreedyLoop(RegExpCompiler *compiler, Trace *trace, AlternativeGenerationList *alt_gens, PreloadState *preloads, GreedyLoopState *greedy_loop_state, int text_length)
void set_being_calculated(bool b)
virtual void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
virtual void GetQuickCheckDetails(QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start)
virtual bool try_to_emit_quick_check_for_alternative(bool is_first)
void EmitChoices(RegExpCompiler *compiler, AlternativeGenerationList *alt_gens, int first_choice, Trace *trace, PreloadState *preloads)
void EmitOutOfLineContinuation(RegExpCompiler *compiler, Trace *trace, GuardedAlternative alternative, AlternativeGeneration *alt_gen, int preload_characters, bool next_expects_preload)
void SetUpPreLoad(RegExpCompiler *compiler, Trace *current_trace, PreloadState *preloads)
virtual int EatsAtLeast(int still_to_find, int budget, bool not_at_start)
virtual RegExpNode * FilterOneByte(int depth, bool ignore_case)
void AssertGuardsMentionRegisters(Trace *trace)
void GenerateGuard(RegExpMacroAssembler *macro_assembler, Guard *guard, Trace *trace)
int EatsAtLeastHelper(int still_to_find, int budget, RegExpNode *ignore_this_node, bool not_at_start)
virtual void Emit(RegExpCompiler *compiler, Trace *trace)
void AddRange(CharacterRange range)
void BuildTable(ChoiceNode *node)
DispatchTableConstructor(DispatchTable *table, bool ignore_case, Zone *zone)
void AddInverse(ZoneList< CharacterRange > *ranges)
void set_choice_index(int value)
static const Entry NoValue()
static int Compare(uc16 a, uc16 b)
void AddValue(int value, Zone *zone)
Entry(uc16 from, uc16 to, OutSet *out_set)
void AddRange(CharacterRange range, int value, Zone *zone)
void ForEach(Callback *callback)
ZoneSplayTree< Config > * tree()
DispatchTable(Zone *zone)
ZoneSplayTree< Config > tree_
virtual void GetQuickCheckDetails(QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start)
EndNode(Action action, Zone *zone)
virtual int EatsAtLeast(int still_to_find, int recursion_depth, bool not_at_start)
virtual void Emit(RegExpCompiler *compiler, Trace *trace)
virtual void Accept(NodeVisitor *visitor)
@ NEGATIVE_SUBMATCH_SUCCESS
virtual void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
static const int kHeaderSize
void set(int index, Object *value)
Trace * counter_backtrack_trace()
Trace counter_backtrack_trace_
GreedyLoopState(bool not_at_start)
Guard(int reg, Relation op, int value)
void AddGuard(Guard *guard, Zone *zone)
void set_node(RegExpNode *node)
GuardedAlternative(RegExpNode *node)
ZoneList< Guard * > * guards_
ZoneList< Guard * > * guards()
Interval(int from, int to)
Interval Union(Interval that)
void Add(const T &element, AllocationPolicy allocator=AllocationPolicy())
RegExpNode * continue_node()
bool body_can_be_zero_length()
void AddContinueAlternative(GuardedAlternative alt)
virtual void GetQuickCheckDetails(QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start)
RegExpNode * continue_node_
void AddLoopAlternative(GuardedAlternative alt)
virtual void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
bool body_can_be_zero_length_
virtual void Accept(NodeVisitor *visitor)
LoopChoiceNode(bool body_can_be_zero_length, Zone *zone)
virtual RegExpNode * FilterOneByte(int depth, bool ignore_case)
void AddAlternative(GuardedAlternative node)
virtual int EatsAtLeast(int still_to_find, int budget, bool not_at_start)
virtual void Emit(RegExpCompiler *compiler, Trace *trace)
NegativeLookaheadChoiceNode(GuardedAlternative this_must_fail, GuardedAlternative then_do_this, Zone *zone)
virtual int EatsAtLeast(int still_to_find, int budget, bool not_at_start)
virtual void GetQuickCheckDetails(QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start)
virtual bool try_to_emit_quick_check_for_alternative(bool is_first)
virtual RegExpNode * FilterOneByte(int depth, bool ignore_case)
virtual void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
virtual void Emit(RegExpCompiler *compiler, Trace *trace)
NegativeSubmatchSuccess(int stack_pointer_reg, int position_reg, int clear_capture_count, int clear_capture_start, Zone *zone)
int stack_pointer_register_
int current_position_register_
virtual void VisitLoopChoice(LoopChoiceNode *that)
OutSet(uint32_t first, ZoneList< unsigned > *remaining)
void Set(unsigned value, Zone *zone)
OutSet * Extend(unsigned value, Zone *zone)
ZoneList< unsigned > * remaining_
ZoneList< OutSet * > * successors_
bool Get(unsigned value) const
static const unsigned kFirstLimit
ZoneList< OutSet * > * successors(Zone *zone)
Position * positions(int index)
QuickCheckDetails(int characters)
void Merge(QuickCheckDetails *other, int from_index)
void set_characters(int characters)
bool Rationalize(bool one_byte)
void Advance(int by, bool one_byte)
static CompilationResult Compile(RegExpCompileData *input, bool ignore_case, bool global, bool multiline, bool sticky, Handle< String > pattern, Handle< String > sample_subject, bool is_one_byte, Zone *zone)
static void DotPrint(const char *label, RegExpNode *node, bool ignore_case)
INLINE(int32_t *FetchNext())
INLINE(bool HasException())
Handle< String > subject_
int32_t * register_array_
INLINE(int32_t *LastSuccessfulMatch())
Handle< JSRegExp > regexp_
GlobalCache(Handle< JSRegExp > regexp, Handle< String > subject, bool is_global, Isolate *isolate)
static const int kLastCaptureCountOffset
static const int kRegWxpCompiledLimit
static MUST_USE_RESULT MaybeHandle< Object > Exec(Handle< JSRegExp > regexp, Handle< String > subject, int index, Handle< JSArray > lastMatchInfo)
static MUST_USE_RESULT MaybeHandle< Object > IrregexpExec(Handle< JSRegExp > regexp, Handle< String > subject, int index, Handle< JSArray > lastMatchInfo)
static const int kLastCaptureCount
static void SetLastCaptureCount(FixedArray *array, int to)
static bool UsesNativeRegExp()
static void SetIrregexpMaxRegisterCount(FixedArray *re, int value)
static bool CompileIrregexp(Handle< JSRegExp > re, Handle< String > sample_subject, bool is_one_byte)
static void SetLastSubject(FixedArray *array, String *to)
static Handle< Object > AtomExec(Handle< JSRegExp > regexp, Handle< String > subject, int index, Handle< JSArray > lastMatchInfo)
static const int kLastSubjectOffset
static void AtomCompile(Handle< JSRegExp > re, Handle< String > pattern, JSRegExp::Flags flags, Handle< String > match_pattern)
static const int kLastMatchOverhead
static void SetCapture(FixedArray *array, int index, int to)
static int GetCapture(FixedArray *array, int index)
static ByteArray * IrregexpByteCode(FixedArray *re, bool is_one_byte)
static const int kLastInputOffset
static Handle< JSArray > SetLastMatchInfo(Handle< JSArray > last_match_info, Handle< String > subject, int capture_count, int32_t *match)
static int AtomExecRaw(Handle< JSRegExp > regexp, Handle< String > subject, int index, int32_t *output, int output_size)
static void IrregexpInitialize(Handle< JSRegExp > re, Handle< String > pattern, JSRegExp::Flags flags, int capture_register_count)
static Handle< String > ToString(Handle< Object > value)
static int IrregexpMaxRegisterCount(FixedArray *re)
static const int kRegExpExecutableMemoryLimit
static MUST_USE_RESULT MaybeHandle< Object > CreateRegExpLiteral(Handle< JSFunction > constructor, Handle< String > pattern, Handle< String > flags)
static void SetLastInput(FixedArray *array, String *to)
static const int kLastInput
static int IrregexpPrepare(Handle< JSRegExp > regexp, Handle< String > subject)
static int GetLastCaptureCount(FixedArray *array)
static int IrregexpExecRaw(Handle< JSRegExp > regexp, Handle< String > subject, int index, int32_t *output, int output_size)
static Code * IrregexpNativeCode(FixedArray *re, bool is_one_byte)
static int IrregexpNumberOfRegisters(FixedArray *re)
static bool EnsureCompiledIrregexp(Handle< JSRegExp > re, Handle< String > sample_subject, bool is_one_byte)
static const int kFirstCapture
static const int kLastSubject
static const int kFirstCaptureOffset
static int IrregexpNumberOfCaptures(FixedArray *re)
static MUST_USE_RESULT MaybeHandle< Object > Compile(Handle< JSRegExp > re, Handle< String > pattern, Handle< String > flags)
BoyerMooreLookahead * bm_info(bool not_at_start)
void set_bm_info(bool not_at_start, BoyerMooreLookahead *bm)
BoyerMooreLookahead * bm_info_[2]
virtual RegExpNode * GetSuccessorOfOmnivorousTextNode(RegExpCompiler *compiler)
RegExpNode * replacement()
LimitResult LimitVersions(RegExpCompiler *compiler, Trace *trace)
void SaveBMInfo(BoyerMooreLookahead *bm, bool not_at_start, int offset)
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 void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
virtual int GreedyLoopTextLength()
RegExpNode * replacement_
virtual void Emit(RegExpCompiler *compiler, Trace *trace)=0
RegExpNode * set_replacement(RegExpNode *replacement)
virtual void Accept(NodeVisitor *visitor)=0
static const int kRecursionBudget
static const int kNodeIsTooComplexForGreedyLoops
virtual RegExpNode * FilterOneByte(int depth, bool ignore_case)
virtual void GetQuickCheckDetails(QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start)=0
virtual int EatsAtLeast(int still_to_find, int budget, bool not_at_start)=0
static const int kMaxCopiesCodeGenerated
static const int kFirstCharBudget
virtual RegExpNode * FilterOneByte(int depth, bool ignore_case)
RegExpNode * FilterSuccessor(int depth, bool ignore_case)
virtual void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
RegExpNode * on_success()
void set_on_success(RegExpNode *node)
SeqRegExpNode(RegExpNode *on_success)
static Smi * FromInt(int value)
static bool SkipPass(int pass, bool ignore_case)
virtual int GreedyLoopTextLength()
TextNode(RegExpCharacterClass *that, RegExpNode *on_success)
virtual RegExpNode * GetSuccessorOfOmnivorousTextNode(RegExpCompiler *compiler)
virtual void FillInBMInfo(int offset, int budget, BoyerMooreLookahead *bm, bool not_at_start)
static const int kLastPass
@ NON_LETTER_CHARACTER_MATCH
static const int kFirstRealPass
ZoneList< TextElement > * elms_
virtual RegExpNode * FilterOneByte(int depth, bool ignore_case)
virtual void GetQuickCheckDetails(QuickCheckDetails *details, RegExpCompiler *compiler, int characters_filled_in, bool not_at_start)
virtual int EatsAtLeast(int still_to_find, int budget, bool not_at_start)
void MakeCaseIndependent(bool is_one_byte)
virtual void Emit(RegExpCompiler *compiler, Trace *trace)
void TextEmitPass(RegExpCompiler *compiler, TextEmitPassType pass, bool preloaded, Trace *trace, bool first_element_checked, int *checked_up_to)
ZoneList< TextElement > * elements()
TextNode(ZoneList< TextElement > *elms, RegExpNode *on_success)
virtual void Accept(NodeVisitor *visitor)
DeferredAction(ActionNode::ActionType action_type, int reg)
ActionNode::ActionType action_type()
ActionNode::ActionType action_type_
DeferredCapture(int reg, bool is_capture, Trace *trace)
void set_cp_offset(int cp_offset)
DeferredClearCaptures(Interval range)
DeferredIncrementRegister(int reg)
DeferredSetRegister(int reg, int value)
void set_stop_node(RegExpNode *node)
int characters_preloaded()
void Flush(RegExpCompiler *compiler, RegExpNode *successor)
int FindAffectedRegisters(OutSet *affected_registers, Zone *zone)
int bound_checked_up_to()
int characters_preloaded_
DeferredAction * actions_
void RestoreAffectedRegisters(RegExpMacroAssembler *macro, int max_register, const OutSet ®isters_to_pop, const OutSet ®isters_to_clear)
DeferredAction * actions()
void AdvanceCurrentPositionInTrace(int by, RegExpCompiler *compiler)
void set_characters_preloaded(int count)
void add_action(DeferredAction *new_action)
void set_at_start(bool at_start)
void set_quick_check_performed(QuickCheckDetails *d)
void PerformDeferredActions(RegExpMacroAssembler *macro, int max_register, const OutSet &affected_registers, OutSet *registers_to_pop, OutSet *registers_to_clear, Zone *zone)
bool mentions_reg(int reg)
bool GetStoredPosition(int reg, int *cp_offset)
void set_backtrack(Label *backtrack)
void set_bound_checked_up_to(int to)
QuickCheckDetails quick_check_performed_
void set_loop_label(Label *label)
void set_flush_budget(int to)
void InvalidateCurrentCharacter()
QuickCheckDetails * quick_check_performed()
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be expose gc extension under the specified name show built in functions in stack traces use random jit cookie to mask large constants minimum length for automatic enable preparsing CPU profiler sampling interval in microseconds trace out of bounds accesses to external arrays default size of stack region v8 is allowed to maximum length of function source code printed in a stack trace min size of a semi the new space consists of two semi spaces print one trace line following each garbage collection do not print trace line after scavenger collection print cumulative GC statistics in only print modified registers Trace simulator debug messages Implied by trace sim abort randomize hashes to avoid predictable hash Fixed seed to use to hash property Print the time it takes to deserialize the snapshot A filename with extra code to be included in the A file to write the raw snapshot bytes to(mksnapshot only)") DEFINE_STRING(raw_context_file
enable harmony numeric enable harmony object literal extensions true
enable harmony numeric enable harmony object literal extensions Optimize object Array DOM strings and string trace pretenuring decisions of HAllocate instructions Enables optimizations which favor memory size over execution speed maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining trace the tracking of allocation sites deoptimize every n garbage collections perform array bounds checks elimination analyze liveness of environment slots and zap dead values flushes the cache of optimized code for closures on every GC allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes enable context specialization in TurboFan execution budget before interrupt is triggered max percentage of megamorphic generic ICs to allow optimization enable use of SAHF instruction if enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV instructions if enable use of MLS instructions if enable loading bit constant by means of movw movt instruction enable unaligned accesses for enable use of d16 d31 registers on ARM this requires VFP3 force all emitted branches to be in long enable alignment of csp to bytes on platforms which prefer the register to always be NULL
#define FOR_EACH_REG_EXP_TREE_TYPE(VISIT)
#define DECLARE_VISIT(Type)
#define FORWARD_DECLARE(Name)
#define FOR_EACH_NODE_TYPE(VISIT)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)
static LifetimePosition Min(LifetimePosition a, LifetimePosition b)
ContainedInLattice Combine(ContainedInLattice a, ContainedInLattice b)
static LifetimePosition Max(LifetimePosition a, LifetimePosition b)
int kUninitializedRegExpNodePlaceHolder
ContainedInLattice AddRange(ContainedInLattice containment, const int *ranges, int ranges_length, Interval new_range)
Debugger support for the V8 JavaScript engine.
void AddFromFollowing(NodeInfo *that)
bool follows_start_interest
void ResetCompilationState()
void AddFromPreceding(NodeInfo *that)
bool follows_newline_interest
bool replacement_calculated
bool Matches(NodeInfo *that)
bool follows_word_interest
static const int kEatsAtLeastNotYetInitialized
bool preload_has_checked_bounds_
bool determines_perfectly
const char * error_message
CompilationResult(Object *code, int registers)
CompilationResult(Isolate *isolate, const char *error_message)