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.