diff options
Diffstat (limited to 'deps/v8/src/register-configuration.cc')
-rw-r--r-- | deps/v8/src/register-configuration.cc | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/deps/v8/src/register-configuration.cc b/deps/v8/src/register-configuration.cc index 28d0ab2cc5..af35fd3b03 100644 --- a/deps/v8/src/register-configuration.cc +++ b/deps/v8/src/register-configuration.cc @@ -22,9 +22,13 @@ static const int kAllocatableGeneralCodes[] = { ALLOCATABLE_GENERAL_REGISTERS(REGISTER_CODE)}; #undef REGISTER_CODE -static const int kAllocatableDoubleCodes[] = { #define REGISTER_CODE(R) DoubleRegister::kCode_##R, +static const int kAllocatableDoubleCodes[] = { ALLOCATABLE_DOUBLE_REGISTERS(REGISTER_CODE)}; +#if V8_TARGET_ARCH_ARM +static const int kAllocatableNoVFP32DoubleCodes[] = { + ALLOCATABLE_NO_VFP32_DOUBLE_REGISTERS(REGISTER_CODE)}; +#endif // V8_TARGET_ARCH_ARM #undef REGISTER_CODE static const char* const kGeneralRegisterNames[] = { @@ -77,9 +81,7 @@ class ArchDefaultRegisterConfiguration : public RegisterConfiguration { kMaxAllocatableGeneralRegisterCount, kMaxAllocatableDoubleRegisterCount, #elif V8_TARGET_ARCH_ARM - FLAG_enable_embedded_constant_pool - ? (kMaxAllocatableGeneralRegisterCount - 1) - : kMaxAllocatableGeneralRegisterCount, + kMaxAllocatableGeneralRegisterCount, CpuFeatures::IsSupported(VFP32DREGS) ? kMaxAllocatableDoubleRegisterCount : (ALLOCATABLE_NO_VFP32_DOUBLE_REGISTERS(REGISTER_COUNT) 0), @@ -101,7 +103,14 @@ class ArchDefaultRegisterConfiguration : public RegisterConfiguration { #else #error Unsupported target architecture. #endif - kAllocatableGeneralCodes, kAllocatableDoubleCodes, + kAllocatableGeneralCodes, +#if V8_TARGET_ARCH_ARM + CpuFeatures::IsSupported(VFP32DREGS) + ? kAllocatableDoubleCodes + : kAllocatableNoVFP32DoubleCodes, +#else + kAllocatableDoubleCodes, +#endif kSimpleFPAliasing ? AliasingKind::OVERLAP : AliasingKind::COMBINE, kGeneralRegisterNames, kFloatRegisterNames, kDoubleRegisterNames, kSimd128RegisterNames) { |