equal
deleted
inserted
replaced
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 |