Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index 0c1a3781a4f40c94b7059420b7462a5e437f8ba2..5e11a36cb1c41c3b33dae3921828d9615eb20ee5 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -3950,8 +3950,9 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { |
hinstr->value()->representation().IsInteger32()) { |
ASSERT(hinstr->store_mode() == STORE_TO_INITIALIZED_ENTRY); |
#ifdef DEBUG |
- __ movq(kScratchRegister, FieldOperand(write_register, offset)); |
- __ AssertSmi(kScratchRegister); |
+ Register scratch = kScratchRegister; |
+ __ Load(scratch, FieldOperand(write_register, offset), representation); |
+ __ AssertSmi(scratch); |
#endif |
// Store int value directly to upper half of the smi. |
STATIC_ASSERT(kSmiTag == 0); |
@@ -4206,6 +4207,17 @@ void LCodeGen::DoStoreKeyedFixedArray(LStoreKeyed* instr) { |
if (representation.IsInteger32()) { |
ASSERT(hinstr->store_mode() == STORE_TO_INITIALIZED_ENTRY); |
ASSERT(hinstr->elements_kind() == FAST_SMI_ELEMENTS); |
+#ifdef DEBUG |
+ Register scratch = kScratchRegister; |
+ __ Load(scratch, |
+ BuildFastArrayOperand(instr->elements(), |
+ key, |
+ FAST_ELEMENTS, |
+ offset, |
+ instr->additional_index()), |
+ Representation::Smi()); |
+ __ AssertSmi(scratch); |
+#endif |
// Store int value directly to upper half of the smi. |
STATIC_ASSERT(kSmiTag == 0); |
STATIC_ASSERT(kSmiTagSize + kSmiShiftSize == 32); |