Index: src/full-codegen.h |
diff --git a/src/full-codegen.h b/src/full-codegen.h |
index 889ddda910eb4b35fb7b4d90c1e3900d9f74338c..21d28266c45d36bf9a9f46e10c74beb8a58a4f41 100644 |
--- a/src/full-codegen.h |
+++ b/src/full-codegen.h |
@@ -16,6 +16,7 @@ |
#include "src/compiler.h" |
#include "src/globals.h" |
#include "src/objects.h" |
+#include "src/scopes.h" |
namespace v8 { |
namespace internal { |
@@ -220,8 +221,9 @@ class FullCodeGenerator: public AstVisitor { |
virtual ~NestedBlock() {} |
virtual NestedStatement* Exit(int* stack_depth, int* context_length) { |
- if (statement()->AsBlock()->scope() != NULL) { |
- ++(*context_length); |
+ auto block_scope = statement()->AsBlock()->scope(); |
+ if (block_scope != nullptr) { |
+ if (block_scope->ContextLocalCount() > 0) ++(*context_length); |
} |
return previous_; |
} |
@@ -968,11 +970,14 @@ class FullCodeGenerator: public AstVisitor { |
MacroAssembler* masm() const { return codegen_->masm(); } |
FullCodeGenerator* codegen_; |
- Scope* scope_; |
Scope* saved_scope_; |
BailoutId exit_id_; |
+ bool needs_block_context_; |
}; |
+ void AllocateStackLocals(int num_stack_slots); |
+ void DeallocateStackLocals(int num_stack_slots); |
+ |
MacroAssembler* masm_; |
CompilationInfo* info_; |
Scope* scope_; |