Index: src/x64/codegen-x64.cc |
diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc |
index fe644ee90a90718307dd7056615bd151b38e32b8..dd65fa698d377f941b4cde2a60e68b679aec5a91 100644 |
--- a/src/x64/codegen-x64.cc |
+++ b/src/x64/codegen-x64.cc |
@@ -500,17 +500,19 @@ void CodeGenerator::GenerateReturnSequence(Result* return_value) { |
return_value->ToRegister(rax); |
// Add a label for checking the size of the code used for returning. |
+#ifdef DEBUG |
Label check_exit_codesize; |
masm_->bind(&check_exit_codesize); |
+#endif |
// Leave the frame and return popping the arguments and the |
// receiver. |
frame_->Exit(); |
masm_->ret((scope_->num_parameters() + 1) * kPointerSize); |
// Add padding that will be overwritten by a debugger breakpoint. |
- // frame_->Exit() generates "movq rsp, rbp; pop rbp" length 5. |
- // "ret k" has length 2. |
- const int kPadding = Debug::kX64JSReturnSequenceLength - 5 - 2; |
+ // frame_->Exit() generates "movq rsp, rbp; pop rbp" length 3+1. |
+ // "ret k" has length 3. |
+ const int kPadding = Debug::kX64JSReturnSequenceLength - 4 - 3; |
for (int i = 0; i < kPadding; ++i) { |
masm_->int3(); |
} |
@@ -5731,6 +5733,13 @@ void Reference::GetValue(TypeofState typeof_state) { |
ASSERT(cgen_->HasValidEntryRegisters()); |
ASSERT(!is_illegal()); |
MacroAssembler* masm = cgen_->masm(); |
+ |
+ // Record the source position for the property load. |
+ Property* property = expression_->AsProperty(); |
+ if (property != NULL) { |
+ cgen_->CodeForSourcePosition(property->position()); |
+ } |
+ |
switch (type_) { |
case SLOT: { |
Comment cmnt(masm, "[ Load from Slot"); |