Changeset 97286 in webkit
- Timestamp:
- Oct 12, 2011 12:28:12 PM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r97269 r97286 1 2011-10-12 Yuqiang Xian <yuqiang.xian@intel.com> 2 3 DFG JIT 32_64 - Fix ArrayPop 4 https://bugs.webkit.org/show_bug.cgi?id=69918 5 6 Reviewed by Filip Pizlo. 7 8 The storageLengthGPR is polluted by EmptyValueTag and later used to 9 index the array, which results in abnormal behaviors in execution. 10 This fix makes 32_64 DFG pass v8-deltablue and kraken 11 crypto-sha256-iterative on Linux ia32. 12 13 * assembler/MacroAssemblerX86Common.h: 14 (JSC::MacroAssemblerX86Common::store32): 15 * assembler/X86Assembler.h: 16 (JSC::X86Assembler::movl_i32m): 17 * dfg/DFGSpeculativeJIT32_64.cpp: 18 (JSC::DFG::SpeculativeJIT::compile): 19 1 20 2011-10-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 2 21 -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
r96169 r97286 512 512 } 513 513 514 void store32(TrustedImm32 imm, BaseIndex address) 515 { 516 m_assembler.movl_i32m(imm.m_value, address.offset, address.base, address.index, address.scale); 517 } 518 514 519 void store8(TrustedImm32 imm, Address address) 515 520 { -
trunk/Source/JavaScriptCore/assembler/X86Assembler.h
r96259 r97286 1067 1067 } 1068 1068 1069 void movl_i32m(int imm, int offset, RegisterID base, RegisterID index, int scale) 1070 { 1071 m_formatter.oneByteOp(OP_GROUP11_EvIz, GROUP11_MOV, base, index, scale, offset); 1072 m_formatter.immediate32(imm); 1073 } 1074 1069 1075 void movb_i8m(int imm, int offset, RegisterID base) 1070 1076 { -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp
r97218 r97286 1545 1545 MacroAssembler::Jump holeCase = m_jit.branch32(MacroAssembler::Equal, Imm32(JSValue::EmptyValueTag), valueTagGPR); 1546 1546 1547 m_jit.move(Imm32(JSValue::EmptyValueTag), storageLengthGPR); 1548 m_jit.store32(storageLengthGPR, MacroAssembler::BaseIndex(storageGPR, storageLengthGPR, MacroAssembler::TimesEight, OBJECT_OFFSETOF(ArrayStorage, m_vector[0]) + OBJECT_OFFSETOF(JSValue, u.asBits.tag))); 1547 m_jit.store32(TrustedImm32(JSValue::EmptyValueTag), MacroAssembler::BaseIndex(storageGPR, storageLengthGPR, MacroAssembler::TimesEight, OBJECT_OFFSETOF(ArrayStorage, m_vector[0]) + OBJECT_OFFSETOF(JSValue, u.asBits.tag))); 1549 1548 1550 1549 m_jit.sub32(MacroAssembler::Imm32(1), MacroAssembler::Address(storageGPR, OBJECT_OFFSETOF(ArrayStorage, m_numValuesInVector)));
Note: See TracChangeset
for help on using the changeset viewer.