| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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/scopeinfo.h" | 5 #include "src/ast/scopeinfo.h" |
| 6 | 6 |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include "src/ast/context-slot-cache.h" | 9 #include "src/ast/context-slot-cache.h" |
| 10 #include "src/ast/scopes.h" | 10 #include "src/ast/scopes.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 } | 48 } |
| 49 | 49 |
| 50 bool has_new_target = | 50 bool has_new_target = |
| 51 scope->is_declaration_scope() && | 51 scope->is_declaration_scope() && |
| 52 scope->AsDeclarationScope()->new_target_var() != nullptr; | 52 scope->AsDeclarationScope()->new_target_var() != nullptr; |
| 53 | 53 |
| 54 // Determine use and location of the function variable if it is present. | 54 // Determine use and location of the function variable if it is present. |
| 55 VariableAllocationInfo function_name_info; | 55 VariableAllocationInfo function_name_info; |
| 56 VariableMode function_variable_mode; | 56 VariableMode function_variable_mode; |
| 57 if (scope->is_function_scope() && | 57 if (scope->is_function_scope() && |
| 58 scope->AsDeclarationScope()->function() != nullptr) { | 58 scope->AsDeclarationScope()->function_var() != nullptr) { |
| 59 Variable* var = scope->AsDeclarationScope()->function()->proxy()->var(); | 59 Variable* var = scope->AsDeclarationScope()->function_var(); |
| 60 if (!var->is_used()) { | 60 if (!var->is_used()) { |
| 61 function_name_info = UNUSED; | 61 function_name_info = UNUSED; |
| 62 } else if (var->IsContextSlot()) { | 62 } else if (var->IsContextSlot()) { |
| 63 function_name_info = CONTEXT; | 63 function_name_info = CONTEXT; |
| 64 } else { | 64 } else { |
| 65 DCHECK(var->IsStackLocal()); | 65 DCHECK(var->IsStackLocal()); |
| 66 function_name_info = STACK; | 66 function_name_info = STACK; |
| 67 } | 67 } |
| 68 function_variable_mode = var->mode(); | 68 function_variable_mode = var->mode(); |
| 69 } else { | 69 } else { |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 if (has_receiver) { | 185 if (has_receiver) { |
| 186 int var_index = scope->AsDeclarationScope()->receiver()->index(); | 186 int var_index = scope->AsDeclarationScope()->receiver()->index(); |
| 187 scope_info->set(index++, Smi::FromInt(var_index)); | 187 scope_info->set(index++, Smi::FromInt(var_index)); |
| 188 // ?? DCHECK(receiver_info != CONTEXT || var_index == | 188 // ?? DCHECK(receiver_info != CONTEXT || var_index == |
| 189 // scope_info->ContextLength() - 1); | 189 // scope_info->ContextLength() - 1); |
| 190 } | 190 } |
| 191 | 191 |
| 192 // If present, add the function variable name and its index. | 192 // If present, add the function variable name and its index. |
| 193 DCHECK(index == scope_info->FunctionNameEntryIndex()); | 193 DCHECK(index == scope_info->FunctionNameEntryIndex()); |
| 194 if (has_function_name) { | 194 if (has_function_name) { |
| 195 int var_index = | 195 int var_index = scope->AsDeclarationScope()->function_var()->index(); |
| 196 scope->AsDeclarationScope()->function()->proxy()->var()->index(); | |
| 197 scope_info->set(index++, | 196 scope_info->set(index++, |
| 198 *scope->AsDeclarationScope()->function()->proxy()->name()); | 197 *scope->AsDeclarationScope()->function_var()->name()); |
| 199 scope_info->set(index++, Smi::FromInt(var_index)); | 198 scope_info->set(index++, Smi::FromInt(var_index)); |
| 200 DCHECK(function_name_info != CONTEXT || | 199 DCHECK(function_name_info != CONTEXT || |
| 201 var_index == scope_info->ContextLength() - 1); | 200 var_index == scope_info->ContextLength() - 1); |
| 202 } | 201 } |
| 203 | 202 |
| 204 DCHECK(index == scope_info->length()); | 203 DCHECK(index == scope_info->length()); |
| 205 DCHECK(scope->num_parameters() == scope_info->ParameterCount()); | 204 DCHECK(scope->num_parameters() == scope_info->ParameterCount()); |
| 206 DCHECK(scope->num_heap_slots() == scope_info->ContextLength() || | 205 DCHECK(scope->num_heap_slots() == scope_info->ContextLength() || |
| 207 (scope->num_heap_slots() == kVariablePartIndex && | 206 (scope->num_heap_slots() == kVariablePartIndex && |
| 208 scope_info->ContextLength() == 0)); | 207 scope_info->ContextLength() == 0)); |
| (...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 692 ContextLocalNameEntriesIndex() + ContextLocalCount(), this); | 691 ContextLocalNameEntriesIndex() + ContextLocalCount(), this); |
| 693 } | 692 } |
| 694 | 693 |
| 695 PrintF("}\n"); | 694 PrintF("}\n"); |
| 696 } | 695 } |
| 697 #endif // DEBUG | 696 #endif // DEBUG |
| 698 | 697 |
| 699 | 698 |
| 700 } // namespace internal | 699 } // namespace internal |
| 701 } // namespace v8 | 700 } // namespace v8 |
| OLD | NEW |