Changeset 158926 in webkit
- Timestamp:
- Nov 8, 2013 10:25:52 AM (10 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r158925 r158926 1 2013-11-08 Julien Brianceau <jbriance@cisco.com> 2 3 REGRESSION(r158883): Fix crashes for ARM architecture. 4 https://bugs.webkit.org/show_bug.cgi?id=124038 5 6 Reviewed by Michael Saboff. 7 8 * jit/GPRInfo.h: Remove r11 from the temporary register set, use a free register for 9 nonPreservedNonReturnGPR and remove obsolete declaration of bucketCounterRegister. 10 (JSC::GPRInfo::toRegister): 11 (JSC::GPRInfo::toIndex): 12 * jit/JITOperations.cpp: Frame pointer register is r11 for ARM_TRADITIONAL and 13 r7 for ARM_THUMB2 instead of r5 since r158883. 14 1 15 2013-11-08 Julien Brianceau <jbriance@cisco.com> 2 16 -
trunk/Source/JavaScriptCore/jit/GPRInfo.h
r158915 r158926 452 452 public: 453 453 typedef GPRReg RegisterType; 454 static const unsigned numberOfRegisters = 10;454 static const unsigned numberOfRegisters = 9; 455 455 static const unsigned numberOfArgumentRegisters = NUMBER_OF_ARGUMENT_REGISTERS; 456 456 … … 465 465 static const GPRReg regT5 = ARMRegisters::r9; 466 466 static const GPRReg regT6 = ARMRegisters::r10; 467 static const GPRReg regT7 = ARMRegisters::r 11;467 static const GPRReg regT7 = ARMRegisters::r5; 468 468 static const GPRReg regT8 = ARMRegisters::r3; 469 static const GPRReg regT9 = ARMRegisters::r5;470 469 // These registers match the baseline JIT. 471 470 static const GPRReg cachedResultRegister = regT0; … … 482 481 static const GPRReg returnValueGPR = ARMRegisters::r0; // regT0 483 482 static const GPRReg returnValueGPR2 = ARMRegisters::r1; // regT1 484 static const GPRReg nonPreservedNonReturnGPR = ARMRegisters::r2; 485 486 #if ENABLE(VALUE_PROFILER) 487 static const GPRReg bucketCounterRegister = ARMRegisters::r7; 488 #endif 483 static const GPRReg nonPreservedNonReturnGPR = ARMRegisters::r5; // regT7 489 484 490 485 static GPRReg toRegister(unsigned index) 491 486 { 492 487 ASSERT(index < numberOfRegisters); 493 static const GPRReg registerForIndex[numberOfRegisters] = { regT0, regT1, regT2, regT3, regT4, regT5, regT6, regT7, regT8 , regT9};488 static const GPRReg registerForIndex[numberOfRegisters] = { regT0, regT1, regT2, regT3, regT4, regT5, regT6, regT7, regT8 }; 494 489 return registerForIndex[index]; 495 490 } … … 499 494 ASSERT(reg != InvalidGPRReg); 500 495 ASSERT(reg < 16); 501 static const unsigned indexForRegister[16] = { 0, 1, 2, 8, 3, 9, InvalidIndex, InvalidIndex, 4, 5, 6, 7, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex };496 static const unsigned indexForRegister[16] = { 0, 1, 2, 8, 3, 7, InvalidIndex, InvalidIndex, 4, 5, 6, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex }; 502 497 unsigned result = indexForRegister[reg]; 503 498 ASSERT(result != InvalidIndex); -
trunk/Source/JavaScriptCore/jit/JITOperations.cpp
r158925 r158926 1743 1743 ".thumb_func " THUMB_FUNC_PARAM(getHostCallReturnValue) "\n" 1744 1744 SYMBOL_STRING(getHostCallReturnValue) ":" "\n" 1745 "ldr r 5, [r5, #0]" "\n" // CallerFrameAndPC::callerFrame1746 "mov r0, r 5" "\n"1745 "ldr r7, [r7, #0]" "\n" // CallerFrameAndPC::callerFrame 1746 "mov r0, r7" "\n" 1747 1747 "b " LOCAL_REFERENCE(getHostCallReturnValueWithExecState) "\n" 1748 1748 ); … … 1755 1755 INLINE_ARM_FUNCTION(getHostCallReturnValue) 1756 1756 SYMBOL_STRING(getHostCallReturnValue) ":" "\n" 1757 "ldr r 5, [r5, #0]" "\n" // CallerFrameAndPC::callerFrame1758 "mov r0, r 5" "\n"1757 "ldr r11, [r11, #0]" "\n" // CallerFrameAndPC::callerFrame 1758 "mov r0, r11" "\n" 1759 1759 "b " LOCAL_REFERENCE(getHostCallReturnValueWithExecState) "\n" 1760 1760 );
Note: See TracChangeset
for help on using the changeset viewer.