|
Lines 461-466
void AccessCase::generateWithGuard(
a/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp_sec1
|
| 461 |
generate(state); |
461 |
generate(state); |
| 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 |
void AccessCase::generate(AccessGenerationState& state) |
472 |
void AccessCase::generate(AccessGenerationState& state) |
| 465 |
{ |
473 |
{ |
| 466 |
if (verbose) |
474 |
if (verbose) |
|
Lines 766-777
void AccessCase::generate(AccessGenerationState& state)
a/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp_sec2
|
| 766 |
#else |
774 |
#else |
| 767 |
if (m_type == CustomValueGetter || m_type == CustomAccessorGetter) { |
775 |
if (m_type == CustomValueGetter || m_type == CustomAccessorGetter) { |
| 768 |
jit.setupArgumentsWithExecState( |
776 |
jit.setupArgumentsWithExecState( |
| 769 |
baseForCustomValue, |
777 |
EABI_32BIT_DUMMY_ARG baseForCustomValue, |
| 770 |
CCallHelpers::TrustedImm32(JSValue::CellTag), |
778 |
CCallHelpers::TrustedImm32(JSValue::CellTag), |
| 771 |
CCallHelpers::TrustedImmPtr(ident.impl())); |
779 |
CCallHelpers::TrustedImmPtr(ident.impl())); |
| 772 |
} else { |
780 |
} else { |
| 773 |
jit.setupArgumentsWithExecState( |
781 |
jit.setupArgumentsWithExecState( |
| 774 |
baseForCustomValue, |
782 |
EABI_32BIT_DUMMY_ARG baseForCustomValue, |
| 775 |
CCallHelpers::TrustedImm32(JSValue::CellTag), |
783 |
CCallHelpers::TrustedImm32(JSValue::CellTag), |
| 776 |
valueRegs.payloadGPR(), valueRegs.tagGPR()); |
784 |
valueRegs.payloadGPR(), valueRegs.tagGPR()); |
| 777 |
} |
785 |
} |