Changeset 77248 in webkit
- Timestamp:
- Feb 1, 2011 6:40:03 AM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r77242 r77248 1 2011-02-01 Dave Tapuska <dtapuska@rim.com> 2 3 Reviewed by Gavin Barraclough. 4 5 MacroAssemblerARM would generate code that did 32bit loads 6 on addresses that were not aligned. More specifically it would 7 generate a ldr r8,[r1, #7] which isn't valid on ARMv5 and lower. 8 The intended instruction really is ldrb r8,[r1, #7]; ensure we 9 call load8 instead of load32. 10 11 https://bugs.webkit.org/show_bug.cgi?id=46095 12 13 * assembler/MacroAssemblerARM.h: 14 (JSC::MacroAssemblerARM::set32Test32): 15 (JSC::MacroAssemblerARM::set32Test8): 16 1 17 2011-02-01 Darin Fisher <darin@chromium.org> 2 18 -
trunk/Source/JavaScriptCore/assembler/MacroAssemblerARM.h
r75210 r77248 662 662 } 663 663 664 void set32Test32(Condition cond, Address address, Imm32 mask, RegisterID dest) 665 { 666 load32(address, ARMRegisters::S1); 664 void set32Test32(Condition cond, RegisterID reg, Imm32 mask, RegisterID dest) 665 { 667 666 if (mask.m_value == -1) 668 m_assembler.cmp_r(0, ARMRegisters::S1);667 m_assembler.cmp_r(0, reg); 669 668 else 670 m_assembler.tst_r( ARMRegisters::S1, m_assembler.getImm(mask.m_value, ARMRegisters::S0));669 m_assembler.tst_r(reg, m_assembler.getImm(mask.m_value, ARMRegisters::S0)); 671 670 m_assembler.mov_r(dest, ARMAssembler::getOp2(0)); 672 671 m_assembler.mov_r(dest, ARMAssembler::getOp2(1), ARMCondition(cond)); 673 672 } 674 673 674 void set32Test32(Condition cond, Address address, Imm32 mask, RegisterID dest) 675 { 676 load32(address, ARMRegisters::S1); 677 set32Test32(cond, ARMRegisters::S1, mask, dest); 678 } 679 675 680 void set32Test8(Condition cond, Address address, Imm32 mask, RegisterID dest) 676 681 { 677 // ARM doesn't have byte registers678 set32Test32(cond, address, mask, dest);682 load8(address, ARMRegisters::S1); 683 set32Test32(cond, ARMRegisters::S1, mask, dest); 679 684 } 680 685
Note: See TracChangeset
for help on using the changeset viewer.