OSDN Git Service

Merge "Revert "X86: Use locked add rather than mfence""
authorAart Bik <ajcbik@google.com>
Wed, 16 Dec 2015 19:11:38 +0000 (19:11 +0000)
committerGerrit Code Review <noreply-gerritcodereview@google.com>
Wed, 16 Dec 2015 19:11:38 +0000 (19:11 +0000)
1  2 
compiler/optimizing/code_generator_x86.cc
compiler/optimizing/code_generator_x86.h
compiler/optimizing/code_generator_x86_64.cc
compiler/optimizing/code_generator_x86_64.h
compiler/optimizing/intrinsics_x86_64.cc

@@@ -480,28 -423,7 +479,16 @@@ class CodeGeneratorX86_64 : public Code
                            int64_t v,
                            HInstruction* instruction);
  
-   // Ensure that prior stores complete to memory before subsequent loads.
-   // The locked add implementation will avoid serializing device memory, but will
-   // touch (but not change) the top of the stack. The locked add should not be used for
-   // ordering non-temporal stores.
-   void MemoryFence(bool force_mfence = false) {
-     if (!force_mfence && isa_features_.PrefersLockedAddSynchronization()) {
-       assembler_.lock()->addl(Address(CpuRegister(RSP), 0), Immediate(0));
-     } else {
-       assembler_.mfence();
-     }
-   }
   private:
 +  // Factored implementation of GenerateFieldLoadWithBakerReadBarrier
 +  // and GenerateArrayLoadWithBakerReadBarrier.
 +  void GenerateReferenceLoadWithBakerReadBarrier(HInstruction* instruction,
 +                                                 Location ref,
 +                                                 CpuRegister obj,
 +                                                 const Address& src,
 +                                                 Location temp,
 +                                                 bool needs_null_check);
 +
    struct PcRelativeDexCacheAccessInfo {
      PcRelativeDexCacheAccessInfo(const DexFile& dex_file, uint32_t element_off)
          : target_dex_file(dex_file), element_offset(element_off), label() { }