Index: src/parsing/pattern-rewriter.cc |
diff --git a/src/parsing/pattern-rewriter.cc b/src/parsing/pattern-rewriter.cc |
index 02d6de513fe9ce5ec8cd8f0895d4358af88a45ea..2a194ee14b32d9145bddd82f26285ab86ad81241 100644 |
--- a/src/parsing/pattern-rewriter.cc |
+++ b/src/parsing/pattern-rewriter.cc |
@@ -230,22 +230,20 @@ void Parser::PatternRewriter::VisitVariableProxy(VariableProxy* pattern) { |
if (IsImmutableVariableMode(descriptor_->mode)) { |
arguments->Add(value, zone()); |
- value = NULL; // zap the value to avoid the unnecessary assignment |
- |
// Construct the call to Runtime_InitializeConstGlobal |
// and add it to the initialization statement block. |
// Note that the function does different things depending on |
// the number of arguments (1 or 2). |
- initialize = |
- factory()->NewCallRuntime(Runtime::kInitializeConstGlobal, arguments, |
- descriptor_->initialization_pos); |
+ initialize = factory()->NewCallRuntime(Runtime::kInitializeConstGlobal, |
+ arguments, value->position()); |
+ value = NULL; // zap the value to avoid the unnecessary assignment |
} else { |
// Add language mode. |
// We may want to pass singleton to avoid Literal allocations. |
LanguageMode language_mode = initialization_scope->language_mode(); |
- arguments->Add(factory()->NewNumberLiteral(language_mode, |
- descriptor_->declaration_pos), |
- zone()); |
+ arguments->Add( |
+ factory()->NewNumberLiteral(language_mode, RelocInfo::kNoPosition), |
+ zone()); |
// Be careful not to assign a value to the global variable if |
// we're in a with. The initialization value should not |
@@ -253,12 +251,11 @@ void Parser::PatternRewriter::VisitVariableProxy(VariableProxy* pattern) { |
// which is why we need to generate a separate assignment node. |
if (value != NULL && !descriptor_->scope->inside_with()) { |
arguments->Add(value, zone()); |
- value = NULL; // zap the value to avoid the unnecessary assignment |
// Construct the call to Runtime_InitializeVarGlobal |
// and add it to the initialization statement block. |
- initialize = |
- factory()->NewCallRuntime(Runtime::kInitializeVarGlobal, arguments, |
- descriptor_->declaration_pos); |
+ initialize = factory()->NewCallRuntime(Runtime::kInitializeVarGlobal, |
+ arguments, value->position()); |
+ value = NULL; // zap the value to avoid the unnecessary assignment |
} else { |
initialize = NULL; |
} |
@@ -282,8 +279,7 @@ void Parser::PatternRewriter::VisitVariableProxy(VariableProxy* pattern) { |
DCHECK_NOT_NULL(proxy->var()); |
DCHECK_NOT_NULL(value); |
// Add break location for destructured sub-pattern. |
- int pos = |
- IsSubPattern() ? pattern->position() : descriptor_->initialization_pos; |
+ int pos = IsSubPattern() ? pattern->position() : value->position(); |
Assignment* assignment = |
factory()->NewAssignment(Token::INIT, proxy, value, pos); |
block_->statements()->Add( |
@@ -300,8 +296,7 @@ void Parser::PatternRewriter::VisitVariableProxy(VariableProxy* pattern) { |
// property). |
VariableProxy* proxy = initialization_scope->NewUnresolved(factory(), name); |
// Add break location for destructured sub-pattern. |
- int pos = |
- IsSubPattern() ? pattern->position() : descriptor_->initialization_pos; |
+ int pos = IsSubPattern() ? pattern->position() : value->position(); |
Assignment* assignment = |
factory()->NewAssignment(Token::INIT, proxy, value, pos); |
block_->statements()->Add( |