Reviewers: Toon Verwaest,

Message:
PTAL

Description:
Debug-mode check added: optimized keyed store of a smi on x64 is done to a entry
containing a smi.

Please review this at https://codereview.chromium.org/167063002/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+14, -2 lines):
  M src/x64/lithium-codegen-x64.cc


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);


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to