OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/ast/scopes.h" | 5 #include "src/ast/scopes.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/ast/scopeinfo.h" | 8 #include "src/ast/scopeinfo.h" |
9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
10 #include "src/messages.h" | 10 #include "src/messages.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 force_eager_compilation_ = false; | 198 force_eager_compilation_ = false; |
199 force_context_allocation_ = (outer_scope != NULL && !is_function_scope()) | 199 force_context_allocation_ = (outer_scope != NULL && !is_function_scope()) |
200 ? outer_scope->has_forced_context_allocation() : false; | 200 ? outer_scope->has_forced_context_allocation() : false; |
201 num_var_or_const_ = 0; | 201 num_var_or_const_ = 0; |
202 num_stack_slots_ = 0; | 202 num_stack_slots_ = 0; |
203 num_heap_slots_ = 0; | 203 num_heap_slots_ = 0; |
204 num_global_slots_ = 0; | 204 num_global_slots_ = 0; |
205 arity_ = 0; | 205 arity_ = 0; |
206 has_simple_parameters_ = true; | 206 has_simple_parameters_ = true; |
207 rest_parameter_ = NULL; | 207 rest_parameter_ = NULL; |
| 208 rest_index_ = -1; |
208 scope_info_ = scope_info; | 209 scope_info_ = scope_info; |
209 start_position_ = RelocInfo::kNoPosition; | 210 start_position_ = RelocInfo::kNoPosition; |
210 end_position_ = RelocInfo::kNoPosition; | 211 end_position_ = RelocInfo::kNoPosition; |
211 if (!scope_info.is_null()) { | 212 if (!scope_info.is_null()) { |
212 scope_calls_eval_ = scope_info->CallsEval(); | 213 scope_calls_eval_ = scope_info->CallsEval(); |
213 language_mode_ = scope_info->language_mode(); | 214 language_mode_ = scope_info->language_mode(); |
214 is_declaration_scope_ = scope_info->is_declaration_scope(); | 215 is_declaration_scope_ = scope_info->is_declaration_scope(); |
215 function_kind_ = scope_info->function_kind(); | 216 function_kind_ = scope_info->function_kind(); |
216 } | 217 } |
217 } | 218 } |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 kCreatedInitialized); | 515 kCreatedInitialized); |
515 // TODO(wingo): Avoid O(n^2) check. | 516 // TODO(wingo): Avoid O(n^2) check. |
516 *is_duplicate = IsDeclaredParameter(name); | 517 *is_duplicate = IsDeclaredParameter(name); |
517 } | 518 } |
518 if (!is_optional && !is_rest && arity_ == params_.length()) { | 519 if (!is_optional && !is_rest && arity_ == params_.length()) { |
519 ++arity_; | 520 ++arity_; |
520 } | 521 } |
521 if (is_rest) { | 522 if (is_rest) { |
522 DCHECK_NULL(rest_parameter_); | 523 DCHECK_NULL(rest_parameter_); |
523 rest_parameter_ = var; | 524 rest_parameter_ = var; |
| 525 rest_index_ = num_parameters(); |
524 } | 526 } |
525 params_.Add(var, zone()); | 527 params_.Add(var, zone()); |
526 return var; | 528 return var; |
527 } | 529 } |
528 | 530 |
529 | 531 |
530 Variable* Scope::DeclareLocal(const AstRawString* name, VariableMode mode, | 532 Variable* Scope::DeclareLocal(const AstRawString* name, VariableMode mode, |
531 InitializationFlag init_flag, Variable::Kind kind, | 533 InitializationFlag init_flag, Variable::Kind kind, |
532 MaybeAssignedFlag maybe_assigned_flag, | 534 MaybeAssignedFlag maybe_assigned_flag, |
533 int declaration_group_start) { | 535 int declaration_group_start) { |
(...skipping 1140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1674 function_ != NULL && function_->proxy()->var()->IsContextSlot(); | 1676 function_ != NULL && function_->proxy()->var()->IsContextSlot(); |
1675 return num_heap_slots() - Context::MIN_CONTEXT_SLOTS - num_global_slots() - | 1677 return num_heap_slots() - Context::MIN_CONTEXT_SLOTS - num_global_slots() - |
1676 (is_function_var_in_context ? 1 : 0); | 1678 (is_function_var_in_context ? 1 : 0); |
1677 } | 1679 } |
1678 | 1680 |
1679 | 1681 |
1680 int Scope::ContextGlobalCount() const { return num_global_slots(); } | 1682 int Scope::ContextGlobalCount() const { return num_global_slots(); } |
1681 | 1683 |
1682 } // namespace internal | 1684 } // namespace internal |
1683 } // namespace v8 | 1685 } // namespace v8 |
OLD | NEW |