src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp
changeset 54825 1b03400e5a8f
parent 54276 5487a925f70d
child 55105 9ad765641e8f
child 58678 9cf78a70fa4f
equal deleted inserted replaced
54824:adb3a3aa2e52 54825:1b03400e5a8f
    33 #include "ci/ciArrayKlass.hpp"
    33 #include "ci/ciArrayKlass.hpp"
    34 #include "ci/ciInstance.hpp"
    34 #include "ci/ciInstance.hpp"
    35 #include "gc/shared/collectedHeap.hpp"
    35 #include "gc/shared/collectedHeap.hpp"
    36 #include "gc/shared/barrierSet.hpp"
    36 #include "gc/shared/barrierSet.hpp"
    37 #include "gc/shared/cardTableBarrierSet.hpp"
    37 #include "gc/shared/cardTableBarrierSet.hpp"
       
    38 #include "memory/universe.hpp"
    38 #include "nativeInst_ppc.hpp"
    39 #include "nativeInst_ppc.hpp"
       
    40 #include "oops/compressedOops.hpp"
    39 #include "oops/objArrayKlass.hpp"
    41 #include "oops/objArrayKlass.hpp"
    40 #include "runtime/frame.inline.hpp"
    42 #include "runtime/frame.inline.hpp"
    41 #include "runtime/safepointMechanism.inline.hpp"
    43 #include "runtime/safepointMechanism.inline.hpp"
    42 #include "runtime/sharedRuntime.hpp"
    44 #include "runtime/sharedRuntime.hpp"
    43 
    45 
  1235   Register src = addr->base()->as_pointer_register();
  1237   Register src = addr->base()->as_pointer_register();
  1236   Register disp_reg = noreg;
  1238   Register disp_reg = noreg;
  1237   int disp_value = addr->disp();
  1239   int disp_value = addr->disp();
  1238   bool needs_patching = (patch_code != lir_patch_none);
  1240   bool needs_patching = (patch_code != lir_patch_none);
  1239   bool compress_oop = (type == T_ARRAY || type == T_OBJECT) && UseCompressedOops && !wide &&
  1241   bool compress_oop = (type == T_ARRAY || type == T_OBJECT) && UseCompressedOops && !wide &&
  1240                       Universe::narrow_oop_mode() != Universe::UnscaledNarrowOop;
  1242                       CompressedOops::mode() != CompressedOops::UnscaledNarrowOop;
  1241   bool load_disp = addr->index()->is_illegal() && !Assembler::is_simm16(disp_value);
  1243   bool load_disp = addr->index()->is_illegal() && !Assembler::is_simm16(disp_value);
  1242   bool use_R29 = compress_oop && load_disp; // Avoid register conflict, also do null check before killing R29.
  1244   bool use_R29 = compress_oop && load_disp; // Avoid register conflict, also do null check before killing R29.
  1243   // Null check for large offsets in LIRGenerator::do_StoreField.
  1245   // Null check for large offsets in LIRGenerator::do_StoreField.
  1244   bool needs_explicit_null_check = !ImplicitNullChecks || use_R29;
  1246   bool needs_explicit_null_check = !ImplicitNullChecks || use_R29;
  1245 
  1247