Changeset 196368 in webkit
- Timestamp:
- Feb 10, 2016 9:50:07 AM (8 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r196361 r196368 1 2016-02-10 Csaba Osztrogonác <ossy@webkit.org> 2 3 REGRESSION(r196331): It made ~180 JSC tests crash on ARMv7 Linux 4 https://bugs.webkit.org/show_bug.cgi?id=154064 5 6 Reviewed by Mark Lam. 7 8 * bytecode/PolymorphicAccess.cpp: 9 (JSC::AccessCase::generate): Added EABI_32BIT_DUMMY_ARG where it is necessary. 10 * dfg/DFGSpeculativeJIT.h: Fixed the comment. 11 * jit/CCallHelpers.h: 12 (JSC::CCallHelpers::setupArgumentsWithExecState): Added. 13 * wasm/WASMFunctionCompiler.h: Fixed the comment. 14 1 15 2016-02-09 Keith Miller <keith_miller@apple.com> 2 16 -
trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp
r196331 r196368 462 462 } 463 463 464 // EncodedJSValue in JSVALUE32_64 is a 64-bit integer. When being compiled in ARM EABI, it must be aligned on an even-numbered register (r0, r2 or [sp]). 465 // To prevent the assembler from using wrong registers, let's occupy r1 or r3 with a dummy argument when necessary. 466 #if (COMPILER_SUPPORTS(EABI) && CPU(ARM)) || CPU(MIPS) 467 #define EABI_32BIT_DUMMY_ARG CCallHelpers::TrustedImm32(0), 468 #else 469 #define EABI_32BIT_DUMMY_ARG 470 #endif 471 464 472 void AccessCase::generate(AccessGenerationState& state) 465 473 { … … 767 775 if (m_type == CustomValueGetter || m_type == CustomAccessorGetter) { 768 776 jit.setupArgumentsWithExecState( 769 baseForCustomValue,777 EABI_32BIT_DUMMY_ARG baseForCustomValue, 770 778 CCallHelpers::TrustedImm32(JSValue::CellTag), 771 779 CCallHelpers::TrustedImmPtr(ident.impl())); 772 780 } else { 773 781 jit.setupArgumentsWithExecState( 774 baseForCustomValue,782 EABI_32BIT_DUMMY_ARG baseForCustomValue, 775 783 CCallHelpers::TrustedImm32(JSValue::CellTag), 776 784 valueRegs.payloadGPR(), valueRegs.tagGPR()); -
trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
r195865 r196368 1550 1550 #else // USE(JSVALUE32_64) 1551 1551 1552 // EncodedJSValue in JSVALUE32_64 is a 64-bit integer. When being compiled in ARM EABI, it must be aligned even-numbered register (r0, r2 or [sp]).1553 // To avoid assembliesfrom using wrong registers, let's occupy r1 or r3 with a dummy argument when necessary.1552 // EncodedJSValue in JSVALUE32_64 is a 64-bit integer. When being compiled in ARM EABI, it must be aligned on an even-numbered register (r0, r2 or [sp]). 1553 // To prevent the assembler from using wrong registers, let's occupy r1 or r3 with a dummy argument when necessary. 1554 1554 #if (COMPILER_SUPPORTS(EABI) && CPU(ARM)) || CPU(MIPS) 1555 1555 #define EABI_32BIT_DUMMY_ARG TrustedImm32(0), -
trunk/Source/JavaScriptCore/jit/CCallHelpers.h
r196331 r196368 1730 1730 } 1731 1731 1732 ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, GPRReg arg2, TrustedImm32 arg3, GPRReg arg4, GPRReg arg5) 1733 { 1734 poke(arg5, POKE_ARGUMENT_OFFSET + 1); 1735 poke(arg4, POKE_ARGUMENT_OFFSET); 1736 setupArgumentsWithExecState(arg1, arg2, arg3); 1737 } 1738 1732 1739 ALWAYS_INLINE void setupArgumentsWithExecState(TrustedImm32 arg1, TrustedImmPtr arg2, GPRReg arg3, GPRReg arg4) 1733 1740 { -
trunk/Source/JavaScriptCore/wasm/WASMFunctionCompiler.h
r192295 r196368 1288 1288 } 1289 1289 #else 1290 // EncodedJSValue in JSVALUE32_64 is a 64-bit integer. When being compiled in ARM EABI, it must be alignedeven-numbered register (r0, r2 or [sp]).1291 // To avoid assembliesfrom using wrong registers, let's occupy r1 or r3 with a dummy argument when necessary.1290 // EncodedJSValue in JSVALUE32_64 is a 64-bit integer. When being compiled in ARM EABI, it must be aligned on an even-numbered register (r0, r2 or [sp]). 1291 // To prevent the assembler from using wrong registers, let's occupy r1 or r3 with a dummy argument when necessary. 1292 1292 #if (COMPILER_SUPPORTS(EABI) && CPU(ARM)) || CPU(MIPS) 1293 1293 #define EABI_32BIT_DUMMY_ARG TrustedImm32(0),
Note: See TracChangeset
for help on using the changeset viewer.