Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(347)

Unified Diff: src/ia32/ic-ia32.cc

Issue 8008016: Small refactor to KeyedStoreIC::GenerateGeneric to make it slightly faster. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/arm/ic-arm.cc ('K') | « src/arm/ic-arm.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/ia32/ic-ia32.cc
diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc
index c2181e7134f3838a9d1dafc70d2c596f0c6635c1..50ea5416075670d7ee0dba1bd47efb3c7c251dd4 100644
--- a/src/ia32/ic-ia32.cc
+++ b/src/ia32/ic-ia32.cc
@@ -811,23 +811,23 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
// edx: receiver
// edi: FixedArray receiver->elements
+ Label non_smi_value;
+ __ JumpIfNotSmi(eax, &non_smi_value);
+ // It's irrelevant whether array is smi-only or not when writing a smi.
+ __ mov(CodeGenerator::FixedArrayElementOperand(edi, ecx), eax);
+ __ ret(0);
+
+ __ bind(&non_smi_value);
if (FLAG_smi_only_arrays) {
Rico 2011/09/24 18:40:36 Move (corrected) comment from ic-arm.cc in here
- Label not_smi_only;
- // Make sure the elements are smi-only.
__ mov(ebx, FieldOperand(edx, HeapObject::kMapOffset));
- __ CheckFastSmiOnlyElements(ebx, &not_smi_only, Label::kNear);
- // Non-smis need to call into the runtime if the array is smi only.
- __ JumpIfNotSmi(eax, &slow);
- __ mov(CodeGenerator::FixedArrayElementOperand(edi, ecx), eax);
- __ ret(0);
- __ bind(&not_smi_only);
+ __ CheckFastObjectElements(ebx, &slow, Label::kNear);
}
-
+ // Fast elements array, store the value to the elements backing store.
__ mov(CodeGenerator::FixedArrayElementOperand(edi, ecx), eax);
-
// Update write barrier for the elements array address.
__ mov(edx, Operand(eax)); // Preserve the value which is returned.
- __ RecordWriteArray(edi, edx, ecx, kDontSaveFPRegs);
+ __ RecordWriteArray(
+ edi, edx, ecx, kDontSaveFPRegs, EMIT_REMEMBERED_SET, OMIT_SMI_CHECK);
__ ret(0);
}
« src/arm/ic-arm.cc ('K') | « src/arm/ic-arm.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698