Index: src/x64/full-codegen-x64.cc |
=================================================================== |
--- src/x64/full-codegen-x64.cc (revision 9109) |
+++ src/x64/full-codegen-x64.cc (working copy) |
@@ -659,10 +659,11 @@ |
} |
-void FullCodeGenerator::EmitDeclaration(Variable* variable, |
+void FullCodeGenerator::EmitDeclaration(VariableProxy* proxy, |
Variable::Mode mode, |
FunctionLiteral* function) { |
Comment cmnt(masm_, "[ Declaration"); |
+ Variable* variable = proxy->var(); |
ASSERT(variable != NULL); // Must have been resolved. |
Slot* slot = variable->AsSlot(); |
ASSERT(slot != NULL); |
@@ -699,10 +700,12 @@ |
int offset = Context::SlotOffset(slot->index()); |
__ movq(rbx, rsi); |
__ RecordWrite(rbx, offset, result_register(), rcx); |
+ PrepareForBailoutForId(proxy->id(), NO_REGISTERS); |
} else if (mode == Variable::CONST || mode == Variable::LET) { |
__ LoadRoot(kScratchRegister, Heap::kTheHoleValueRootIndex); |
__ movq(ContextOperand(rsi, slot->index()), kScratchRegister); |
// No write barrier since the hole value is in old space. |
+ PrepareForBailoutForId(proxy->id(), NO_REGISTERS); |
} |
break; |
@@ -734,7 +737,7 @@ |
void FullCodeGenerator::VisitDeclaration(Declaration* decl) { |
- EmitDeclaration(decl->proxy()->var(), decl->mode(), decl->fun()); |
+ EmitDeclaration(decl->proxy(), decl->mode(), decl->fun()); |
} |