| Index: src/mips/assembler-mips.cc
|
| diff --git a/src/mips/assembler-mips.cc b/src/mips/assembler-mips.cc
|
| index e629868e4edc1f570cf0fc6f654d5efdc8093f38..7e0be710aa43dc3651fdbe923d6182f7d49a5e5f 100644
|
| --- a/src/mips/assembler-mips.cc
|
| +++ b/src/mips/assembler-mips.cc
|
| @@ -43,38 +43,22 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -#ifdef DEBUG
|
| -bool CpuFeatures::initialized_ = false;
|
| -#endif
|
| -unsigned CpuFeatures::supported_ = 0;
|
| -unsigned CpuFeatures::found_by_runtime_probing_only_ = 0;
|
| -unsigned CpuFeatures::cross_compile_ = 0;
|
| -
|
| -
|
| -ExternalReference ExternalReference::cpu_features() {
|
| - ASSERT(CpuFeatures::initialized_);
|
| - return ExternalReference(&CpuFeatures::supported_);
|
| -}
|
| -
|
| -
|
| // Get the CPU features enabled by the build. For cross compilation the
|
| // preprocessor symbols CAN_USE_FPU_INSTRUCTIONS
|
| // can be defined to enable FPU instructions when building the
|
| // snapshot.
|
| -static uint64_t CpuFeaturesImpliedByCompiler() {
|
| - uint64_t answer = 0;
|
| +static unsigned CpuFeaturesImpliedByCompiler() {
|
| + unsigned answer = 0;
|
| #ifdef CAN_USE_FPU_INSTRUCTIONS
|
| - answer |= static_cast<uint64_t>(1) << FPU;
|
| + answer |= 1u << FPU;
|
| #endif // def CAN_USE_FPU_INSTRUCTIONS
|
|
|
| -#ifdef __mips__
|
| // If the compiler is allowed to use FPU then we can use FPU too in our code
|
| // generation even when generating snapshots. This won't work for cross
|
| // compilation.
|
| -#if(defined(__mips_hard_float) && __mips_hard_float != 0)
|
| - answer |= static_cast<uint64_t>(1) << FPU;
|
| -#endif // defined(__mips_hard_float) && __mips_hard_float != 0
|
| -#endif // def __mips__
|
| +#if defined(__mips__) && defined(__mips_hard_float) && __mips_hard_float != 0
|
| + answer |= 1u << FPU;
|
| +#endif
|
|
|
| return answer;
|
| }
|
| @@ -102,43 +86,30 @@ const char* DoubleRegister::AllocationIndexToString(int index) {
|
| }
|
|
|
|
|
| -void CpuFeatures::Probe(bool serializer_enabled) {
|
| - unsigned standard_features = (OS::CpuFeaturesImpliedByPlatform() |
|
| - CpuFeaturesImpliedByCompiler());
|
| - ASSERT(supported_ == 0 ||
|
| - (supported_ & standard_features) == standard_features);
|
| -#ifdef DEBUG
|
| - initialized_ = true;
|
| -#endif
|
| -
|
| - // Get the features implied by the OS and the compiler settings. This is the
|
| - // minimal set of features which is also allowed for generated code in the
|
| - // snapshot.
|
| - supported_ |= standard_features;
|
| +void CpuFeatures::ProbeImpl(bool cross_compile) {
|
| + supported_ |= OS::CpuFeaturesImpliedByPlatform();
|
| + supported_ |= CpuFeaturesImpliedByCompiler();
|
|
|
| - if (serializer_enabled) {
|
| - // No probing for features if we might serialize (generate snapshot).
|
| - return;
|
| - }
|
| + // Only use statically determined features for cross compile (snapshot).
|
| + if (cross_compile) return;
|
|
|
| // If the compiler is allowed to use fpu then we can use fpu too in our
|
| // code generation.
|
| -#if !defined(__mips__)
|
| +#ifndef __mips__
|
| // For the simulator build, use FPU.
|
| - supported_ |= static_cast<uint64_t>(1) << FPU;
|
| + supported_ |= 1u << FPU;
|
| #else
|
| - // Probe for additional features not already known to be available.
|
| + // Probe for additional features at runtime.
|
| CPU cpu;
|
| - if (cpu.has_fpu()) {
|
| - // This implementation also sets the FPU flags if
|
| - // runtime detection of FPU returns true.
|
| - supported_ |= static_cast<uint64_t>(1) << FPU;
|
| - found_by_runtime_probing_only_ |= static_cast<uint64_t>(1) << FPU;
|
| - }
|
| + if (cpu.has_fpu()) supported_ |= 1u << FPU;
|
| #endif
|
| }
|
|
|
|
|
| +void CpuFeatures::PrintTarget() { }
|
| +void CpuFeatures::PrintFeatures() { }
|
| +
|
| +
|
| int ToNumber(Register reg) {
|
| ASSERT(reg.is_valid());
|
| const int kNumbers[] = {
|
| @@ -2079,10 +2050,9 @@ void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) {
|
| }
|
| if (!RelocInfo::IsNone(rinfo.rmode())) {
|
| // Don't record external references unless the heap will be serialized.
|
| - if (rmode == RelocInfo::EXTERNAL_REFERENCE) {
|
| - if (!Serializer::enabled(isolate()) && !emit_debug_code()) {
|
| - return;
|
| - }
|
| + if (rmode == RelocInfo::EXTERNAL_REFERENCE &&
|
| + !serializer_enabled() && !emit_debug_code()) {
|
| + return;
|
| }
|
| ASSERT(buffer_space() >= kMaxRelocSize); // Too late to grow buffer here.
|
| if (rmode == RelocInfo::CODE_TARGET_WITH_ID) {
|
|
|