Modified: trunk/Source/_javascript_Core/ChangeLog (96568 => 96569)
--- trunk/Source/_javascript_Core/ChangeLog 2011-10-04 03:10:54 UTC (rev 96568)
+++ trunk/Source/_javascript_Core/ChangeLog 2011-10-04 03:20:05 UTC (rev 96569)
@@ -3,6 +3,18 @@
DFG should inline Array.push and Array.pop
https://bugs.webkit.org/show_bug.cgi?id=69314
+ Reviewed by Geoff Garen.
+
+ Fix 32-bit.
+
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::compile):
+
+2011-10-03 Filip Pizlo <fpi...@apple.com>
+
+ DFG should inline Array.push and Array.pop
+ https://bugs.webkit.org/show_bug.cgi?id=69314
+
Reviewed by Oliver Hunt.
1% speed-up in V8 due to 6% speed-up in V8-deltablue.
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp (96568 => 96569)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2011-10-04 03:10:54 UTC (rev 96568)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT32_64.cpp 2011-10-04 03:20:05 UTC (rev 96569)
@@ -1342,13 +1342,11 @@
m_jit.store32(storageLengthGPR, MacroAssembler::Address(storageGPR, OBJECT_OFFSETOF(ArrayStorage, m_length)));
- MacroAssembler::Jump notHole = m_jit.branchTestPtr(MacroAssembler::NonZero, valueTagGPR);
- MacroAssembler::Jump holeCase = m_jit.branchTestPtr(MacroAssembler::Zero, valuePayloadGPR);
- notHole.link(&m_jit);
+ MacroAssembler::Jump holeCase = m_jit.branch32(MacroAssembler::Equal, Imm32(JSValue::EmptyValueTag), valueTagGPR);
- m_jit.move(Imm32(0), storageLengthGPR);
+ m_jit.move(Imm32(JSValue::EmptyValueTag), storageLengthGPR);
m_jit.store32(storageLengthGPR, MacroAssembler::BaseIndex(storageGPR, storageLengthGPR, MacroAssembler::ScalePtr, OBJECT_OFFSETOF(ArrayStorage, m_vector[0]) + OBJECT_OFFSETOF(JSValue, u.asBits.tag)));
- m_jit.store32(storageLengthGPR, MacroAssembler::BaseIndex(storageGPR, storageLengthGPR, MacroAssembler::ScalePtr, OBJECT_OFFSETOF(ArrayStorage, m_vector[0]) + OBJECT_OFFSETOF(JSValue, u.asBits.payload)));
+
m_jit.sub32(MacroAssembler::Imm32(1), MacroAssembler::Address(storageGPR, OBJECT_OFFSETOF(ArrayStorage, m_numValuesInVector)));
MacroAssembler::JumpList done;