50 static bool Match(
void* key1,
void* key2) {
51 String* name1 = *
reinterpret_cast<String**
>(key1);
52 String* name2 = *
reinterpret_cast<String**
>(key2);
53 ASSERT(name1->IsInternalizedString());
54 ASSERT(name2->IsInternalizedString());
55 return name1 == name2;
75 if (p->value ==
NULL) {
77 ASSERT(p->key == name.location());
86 return reinterpret_cast<Variable*
>(p->value);
94 ASSERT(*reinterpret_cast<String**>(p->key) == *name);
96 return reinterpret_cast<Variable*
>(p->value);
106 : isolate_(zone->isolate()),
107 inner_scopes_(4, zone),
112 unresolved_(16, zone),
114 interface_(FLAG_harmony_modules &&
117 already_resolved_(
false),
130 : isolate_(zone->isolate()),
131 inner_scopes_(4, zone),
136 unresolved_(16, zone),
139 already_resolved_(
true),
141 SetDefaults(scope_type,
NULL, scope_info);
148 AddInnerScope(inner_scope);
152 Scope::Scope(Scope* inner_scope, Handle<String> catch_variable_name, Zone* zone)
153 : isolate_(zone->isolate()),
154 inner_scopes_(1, zone),
159 unresolved_(0, zone),
162 already_resolved_(
true),
165 AddInnerScope(inner_scope);
178 void Scope::SetDefaults(
ScopeType scope_type,
180 Handle<ScopeInfo> scope_info) {
198 ? outer_scope->has_forced_context_allocation() :
false;
207 if (!scope_info.is_null()) {
226 current_scope = with_scope;
228 contains_with =
true;
229 for (
Scope* s = innermost_scope; s !=
NULL; s = s->outer_scope()) {
234 current_scope =
new(
zone)
Scope(current_scope,
240 current_scope =
new(
zone)
Scope(current_scope,
246 current_scope =
new(
zone)
Scope(current_scope,
252 current_scope =
new(
zone)
Scope(current_scope,
263 if (innermost_scope ==
NULL) innermost_scope = current_scope;
267 contains_with =
false;
272 global_scope->AddInnerScope(current_scope);
274 return (innermost_scope ==
NULL) ? global_scope : innermost_scope;
298 ? FLAG_print_builtin_scopes
299 : FLAG_print_scopes) {
303 if (FLAG_harmony_modules && FLAG_print_interfaces && top->
is_global_scope()) {
394 if (result !=
NULL || scope_info_.is_null()) {
399 ASSERT(scope_info_->StackSlotIndex(*name) < 0);
405 int index = scope_info_->ContextSlotIndex(*name, &mode, &init_flag);
408 index = scope_info_->ParameterIndex(*name);
409 if (index < 0)
return NULL;
427 }
else if (!scope_info_.is_null()) {
430 int index = scope_info_->FunctionContextSlotIndex(*name, &mode);
431 if (index < 0)
return NULL;
433 this, name, mode,
true ,
435 VariableProxy* proxy = factory->NewVariableProxy(var);
436 VariableDeclaration* declaration = factory->NewVariableDeclaration(
437 proxy, mode,
this, RelocInfo::kNoPosition);
448 for (
Scope* scope =
this;
450 scope = scope->outer_scope()) {
451 Variable* var = scope->LocalLookup(name);
452 if (var !=
NULL)
return var;
552 int length =
decls_.length();
553 for (
int i = 0; i < length; i++) {
555 if (decl->
mode() !=
VAR)
continue;
564 if (other_var !=
NULL && other_var->
mode() !=
VAR) {
579 int order()
const {
return order_; }
581 return a->order_ - b->order_;
596 for (
int i = 0; i <
internals_.length(); i++) {
600 context_locals->
Add(var,
zone());
606 for (
int i = 0; i <
temps_.length(); i++) {
611 context_locals->
Add(var,
zone());
614 stack_locals->
Add(var,
zone());
630 int var_count = vars.length();
631 for (
int i = 0; i < var_count; i++) {
634 stack_locals->
Add(var,
zone());
636 context_locals->
Add(var,
zone());
647 outer_scope_calls_sloppy_eval =
674 for (
const Scope* scope =
this; scope !=
NULL; scope = scope->outer_scope_) {
675 if (scope->is_eval_scope())
return false;
676 if (scope->scope_inside_with_)
return false;
677 if (scope->num_heap_slots_ > 0)
return false;
685 if (outer ==
NULL)
return true;
695 if (outer ==
NULL)
return true;
700 bool found_non_trivial_declarations =
false;
701 for (
const Scope* scope = outer; scope !=
NULL; scope = scope->outer_scope_) {
702 if (scope->is_with_scope() && !found_non_trivial_declarations)
return false;
703 if (scope->is_declaration_scope() && scope->num_heap_slots() > 0) {
704 found_non_trivial_declarations =
true;
725 if (s->is_with_scope() || s->num_heap_slots() > 0) n++;
727 ASSERT(!s->is_catch_scope() || s->num_heap_slots() > 0);
728 ASSERT(!s->is_module_scope() || s->num_heap_slots() > 0);
753 if (scope_info_.is_null()) {
769 ASSERT(beg_pos >= 0 && end_pos >= 0);
770 if (beg_pos <= position && position < end_pos) {
779 static const char* Header(
ScopeType scope_type) {
780 switch (scope_type) {
794 static void Indent(
int n,
const char* str) {
795 PrintF(
"%*s%s", n,
"", str);
799 static void PrintName(Handle<String>
name) {
805 static void PrintLocation(Variable* var) {
806 switch (var->location()) {
810 PrintF(
"parameter[%d]", var->index());
813 PrintF(
"local[%d]", var->index());
816 PrintF(
"context[%d]", var->index());
825 static void PrintVar(
int indent, Variable* var) {
826 if (var->is_used() || !var->IsUnallocated()) {
829 PrintName(var->name());
832 if (var->has_forced_context_allocation()) {
833 if (!var->IsUnallocated())
PrintF(
", ");
834 PrintF(
"forced context allocation");
841 static void PrintMap(
int indent, VariableMap*
map) {
842 for (VariableMap::Entry* p = map->Start(); p !=
NULL; p = map->Next(p)) {
843 Variable* var =
reinterpret_cast<Variable*
>(p->value);
844 PrintVar(indent, var);
850 int n0 = (n > 0 ? n : 0);
863 for (
int i = 0; i <
params_.length(); i++) {
874 Indent(n1,
"// (local) function name: ");
881 Indent(n1,
"// scope has trivial outer context\n");
884 Indent(n1,
"// strict mode scope\n");
890 Indent(n1,
"// outer scope calls 'eval' in sloppy context\n");
900 Indent(n1,
"// function var:\n");
904 if (
temps_.length() > 0) {
905 Indent(n1,
"// temporary vars:\n");
906 for (
int i = 0; i <
temps_.length(); i++) {
912 Indent(n1,
"// internal vars:\n");
913 for (
int i = 0; i <
internals_.length(); i++) {
919 Indent(n1,
"// local vars:\n");
924 Indent(n1,
"// dynamic vars:\n");
982 *binding_kind =
BOUND;
992 *binding_kind =
BOUND;
1017 if (*binding_kind ==
BOUND) {
1019 }
else if (*binding_kind ==
UNBOUND) {
1028 VariableProxy* proxy,
1034 if (proxy->var() !=
NULL)
return true;
1039 switch (binding_kind) {
1082 info->
script(), proxy->position(), proxy->position());
1084 Factory* factory = isolate->factory();
1088 isolate->Throw(*result, &location);
1092 if (FLAG_harmony_modules) {
1095 if (FLAG_print_interface_details)
1096 PrintF(
"# Resolve %s:\n", var->
name()->ToAsciiArray());
1101 if (FLAG_print_interfaces) {
1102 PrintF(
"SCOPES TYPE ERROR\n");
1104 proxy->interface()->Print();
1113 info->
script(), proxy->position(), proxy->position());
1115 Factory* factory = isolate->factory();
1120 isolate->Throw(*result, &location);
1152 if (outer_scope_calls_sloppy_eval) {
1176 if ((var->
is_this() || var->
name()->length() > 0) &&
1215 for (
int i = 0; i <
params_.length(); i++) {
1240 bool uses_sloppy_arguments =
false;
1266 for (
int i =
params_.length() - 1; i >= 0; --i) {
1269 if (uses_sloppy_arguments) {
1307 for (
int i = 0; i <
temps_.length(); i++) {
1311 for (
int i = 0; i <
internals_.length(); i++) {
1323 int var_count = vars.length();
1324 for (
int i = 0; i < var_count; i++) {
bool PropagateScopeInfo(bool outer_scope_calls_sloppy_eval)
bool is_global_scope() const
void AllocateTo(Location location, int index)
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter NULL
static Handle< Object > SetElement(Handle< JSObject > object, uint32_t index, Handle< Object > value, PropertyAttributes attributes, StrictMode strict_mode, bool check_prototype=true, SetPropertyMode set_mode=SET_PROPERTY)
Scope * DeclarationScope()
bool scope_contains_with_
Declaration * CheckConflictingVarDeclarations()
void PrepareForCompilation(Scope *scope)
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths true
void PrintF(const char *format,...)
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function not JSFunction itself flushes the cache of optimized code for closures on every GC functions with arguments object maximum number of escape analysis fix point iterations allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms concurrent on stack replacement do not emit check maps for constant values that have a leaf map
bool outer_scope_calls_sloppy_eval_
void ForceContextAllocation()
static String * cast(Object *obj)
Handle< ScopeInfo > GetScopeInfo()
ZoneList< Scope * > inner_scopes_
bool force_eager_compilation_
VarAndOrder(Variable *var, int order)
void CollectStackAndContextLocals(ZoneList< Variable * > *stack_locals, ZoneList< Variable * > *context_locals)
Scope * FinalizeBlockScope()
Handle< Script > script() const
static bool Analyze(CompilationInfo *info)
Scope * outer_scope() const
bool HasIllegalRedeclaration() const
ZoneList< VariableProxy * > unresolved_
Expression * illegal_redecl_
void set_local_if_not_shadowed(Variable *local)
Scope(Scope *outer_scope, ScopeType scope_type, Zone *zone)
Bootstrapper * bootstrapper()
Handle< String > scope_name_
void DeclareParameter(Handle< String > name, VariableMode mode)
Isolate * isolate() const
bool HasTrivialContext() const
#define ASSERT(condition)
Variable * NewTemporary(Handle< String > name)
bool is_const_mode() const
Interface * interface() const
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function not JSFunction itself flushes the cache of optimized code for closures on every GC functions with arguments object maximum number of escape analysis fix point iterations allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms concurrent on stack replacement do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes number of stack frames inspected by the profiler percentage of ICs that must have type info to allow optimization extra verbose compilation tracing generate extra emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV 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 expose natives in global object expose freeBuffer extension expose gc extension under the specified name expose externalize string extension number of stack frames to capture disable builtin natives files print name of functions for which code is generated use random jit cookie to mask large constants trace lazy optimization use adaptive optimizations always try to OSR functions trace optimize function deoptimization minimum length for automatic enable preparsing maximum number of optimization attempts before giving up cache prototype transitions trace debugging JSON request response trace out of bounds accesses to external arrays trace_js_array_abuse automatically set the debug break flag when debugger commands are in the queue abort by crashing maximum length of function source code printed in a stack trace max size of the new max size of the old max size of executable always perform global GCs print one trace line following each garbage collection do not print trace line after scavenger collection print statistics of the maximum memory committed for the heap in only print modified registers Don t break for ASM_UNIMPLEMENTED_BREAK macros print stack trace when an illegal exception is thrown randomize hashes to avoid predictable hash Fixed seed to use to hash property Print the time it takes to deserialize the snapshot testing_bool_flag testing_int_flag string flag tmp file in which to serialize heap Print the time it takes to lazily compile hydrogen code stubs concurrent_recompilation concurrent_sweeping Print usage including on console Map counters to a file Enable debugger compile events enable GDBJIT interface(disables compacting GC)") DEFINE_bool(gdbjit_full
VariableMap * GetMap(VariableMode mode)
VariableDeclaration * function_
bool has_forced_context_allocation() const
Variable * LookupRecursive(Handle< String > name, BindingKind *binding_kind, AstNodeFactory< AstNullVisitor > *factory)
StrictMode strict_mode() const
bool is_block_scope() const
Handle< String > name() const
static Handle< ScopeInfo > Create(Scope *scope, Zone *zone)
bool MustAllocateInContext(Variable *var)
ZoneList< Declaration * > decls_
Handle< ScopeInfo > scope_info_
int ContextChainLength(Scope *scope)
static ScopeInfo * cast(Object *object)
bool HasTrivialOuterContext() const
bool AllowsLazyCompilation() const
void DeclareFunctionVar(VariableDeclaration *declaration)
void AllocateNonParameterLocal(Variable *var)
static int Compare(const VarAndOrder *a, const VarAndOrder *b)
int start_position() const
Variable * DeclareLocal(Handle< String > name, VariableMode mode, InitializationFlag init_flag, Interface *interface=Interface::NewValue())
VariableProxy * proxy() const
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function not JSFunction itself flushes the cache of optimized code for closures on every GC functions with arguments object maximum number of escape analysis fix point iterations allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms concurrent on stack replacement do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes number of stack frames inspected by the profiler percentage of ICs that must have type info to allow optimization extra verbose compilation tracing generate extra emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV 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 mode(MIPS only)") DEFINE_string(expose_natives_as
void AllocateVariablesRecursively()
VariableMode mode() const
bool is_eval_scope() const
bool HasArgumentsParameter()
Variable * arguments() const
int num_stack_slots() const
bool has_forced_context_allocation() const
void GetNestedScopeChain(List< Handle< ScopeInfo > > *chain, int statement_position)
void AllocateHeapSlot(Variable *var)
bool force_context_allocation_
ScopeType scope_type() const
uint32_t occupancy() const
FunctionLiteral * function() const
void PrintMap(map< string, string > *m)
bool is_declaration_scope() const
ZoneList< Variable * > internals_
bool HasLazyCompilableOuterContext() const
bool inner_scope_calls_eval_
Entry * Lookup(void *key, uint32_t hash, bool insert, ZoneAllocationPolicyallocator=ZoneAllocationPolicy())
void AllocateStackSlot(Variable *var)
bool IsLexicalVariableMode(VariableMode mode)
Scope * global_scope() const
bool IsContextSlot() const
static const char * Mode2String(VariableMode mode)
bool MustAllocate(Variable *var)
Variable * LocalLookup(Handle< String > name)
bool IsVariable(Handle< String > n) const
#define STATIC_ASCII_VECTOR(x)
bool IsDeclaredVariableMode(VariableMode mode)
bool IsStackLocal() const
ZoneList< Variable * > params_
Variable * NewInternal(Handle< String > name)
Interface * interface() const
void AllocateParameterLocals()
int StackLocalCount() const
Handle< Object > NewSyntaxError(const char *message, Handle< JSArray > args)
void AddDeclaration(Declaration *declaration)
int num_heap_slots() const
void VisitIllegalRedeclaration(AstVisitor *visitor)
Handle< String > InternalizeOneByteString(Vector< const uint8_t > str)
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function info
bool is_with_scope() const
void AllocateNonParameterLocals()
ZoneList< Variable * > temps_
bool contains_with() const
bool AllowsLazyCompilationWithoutContext() const
bool IsUnallocated() const
Variable * DeclareDynamicGlobal(Handle< String > name)
int ContextLocalCount() const
Variable * Lookup(Handle< String > name)
void set_is_used(bool flag)
MUST_USE_RESULT bool AllocateVariables(CompilationInfo *info, AstNodeFactory< AstNullVisitor > *factory)
void Print(const v8::FunctionCallbackInfo< v8::Value > &args)
Variable * NonLocal(Handle< String > name, VariableMode mode)
bool IsGlobalObjectProperty() const
void Add(const T &element, AllocationPolicy allocator=AllocationPolicy())
bool outer_scope_calls_sloppy_eval() const
MUST_USE_RESULT bool ResolveVariable(CompilationInfo *info, VariableProxy *proxy, AstNodeFactory< AstNullVisitor > *factory)
DynamicScopePart * dynamics_
void AllocateModulesRecursively(Scope *host_scope)
bool is_function_scope() const
Variable * Lookup(Handle< String > name)
virtual void Accept(AstVisitor *v)=0
VariableMode mode() const
Variable * Declare(Scope *scope, Handle< String > name, VariableMode mode, bool is_valid_lhs, Variable::Kind kind, InitializationFlag initialization_flag, Interface *interface=Interface::NewValue())
void RecordWithStatement()
bool is_module_scope() const
bool is_catch_scope() const
enable upcoming ES6 features enable harmony block scoping enable harmony enable harmony proxies enable harmony generators enable harmony numeric enable harmony string enable harmony math functions harmony_scoping harmony_symbols harmony_collections harmony_iteration harmony_strings harmony_scoping harmony_maths tracks arrays with only smi values Optimize object Array DOM strings and string pretenure call new trace pretenuring decisions of HAllocate instructions track fields with only smi values track fields with heap values track_fields track_fields Enables optimizations which favor memory size over execution speed use string slices optimization filter maximum number of GVN fix point iterations use function inlining use allocation folding eliminate write barriers targeting allocations in optimized code maximum source size in bytes considered for a single inlining maximum cumulative number of AST nodes considered for inlining crankshaft harvests type feedback from stub cache trace check elimination phase hydrogen tracing filter trace hydrogen to given file name trace inlining decisions trace store elimination trace all use positions trace global value numbering trace hydrogen escape analysis trace the tracking of allocation sites trace map generalization environment for every instruction deoptimize every n garbage collections put a break point before deoptimizing deoptimize uncommon cases use on stack replacement trace array bounds check elimination perform array index dehoisting use load elimination use store elimination use constant folding eliminate unreachable code number of stress runs when picking a function to watch for shared function not JSFunction itself flushes the cache of optimized code for closures on every GC functions with arguments object maximum number of escape analysis fix point iterations allow uint32 values on optimize frames if they are used only in safe operations track concurrent recompilation artificial compilation delay in ms concurrent on stack replacement do not emit check maps for constant values that have a leaf deoptimize the optimized code if the layout of the maps changes number of stack frames inspected by the profiler percentage of ICs that must have type info to allow optimization extra verbose compilation tracing generate extra emit comments in code disassembly enable use of SSE3 instructions if available enable use of CMOV instruction if available enable use of VFP3 instructions if available enable use of NEON instructions if enable use of SDIV and UDIV 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 expose natives in global object expose freeBuffer extension expose gc extension under the specified name expose externalize string extension number of stack frames to capture disable builtin natives files print name of functions for which code is generated use random jit cookie to mask large constants trace lazy optimization use adaptive optimizations always try to OSR functions trace optimize function deoptimization minimum length for automatic enable preparsing maximum number of optimization attempts before giving up cache prototype transitions trace debugging JSON request response trace out of bounds accesses to external arrays trace_js_array_abuse automatically set the debug break flag when debugger commands are in the queue abort by crashing maximum length of function source code printed in a stack trace max size of the new max size of the old max size of executable always perform global GCs print one trace line following each garbage collection do not print trace line after scavenger collection print statistics of the maximum memory committed for the heap in name
static Scope * DeserializeScopeChain(Context *context, Scope *global_scope, Zone *zone)
void RemoveUnresolved(VariableProxy *var)
Entry * Next(Entry *p) const
Handle< JSArray > NewJSArray(ElementsKind elements_kind, int length, int capacity, ArrayStorageAllocationMode mode=INITIALIZE_ARRAY_ELEMENTS_WITH_HOLE, PretenureFlag pretenure=NOT_TENURED)
Variable * LookupFunctionVar(Handle< String > name, AstNodeFactory< AstNullVisitor > *factory)
MUST_USE_RESULT bool ResolveVariablesRecursively(CompilationInfo *info, AstNodeFactory< AstNullVisitor > *factory)
void SetIllegalRedeclaration(Expression *expression)