equal
deleted
inserted
replaced
3184 && Universe::heap()->can_elide_permanent_oop_store_barriers()) |
3184 && Universe::heap()->can_elide_permanent_oop_store_barriers()) |
3185 // no store barrier needed, because no old-to-new ref created |
3185 // no store barrier needed, because no old-to-new ref created |
3186 return; |
3186 return; |
3187 } |
3187 } |
3188 |
3188 |
|
3189 if (use_ReduceInitialCardMarks() |
|
3190 && obj == just_allocated_object(control())) { |
|
3191 // We can skip marks on a freshly-allocated object in Eden. |
|
3192 // Keep this code in sync with maybe_defer_card_mark() in runtime.cpp. |
|
3193 // That routine informs GC to take appropriate compensating steps |
|
3194 // so as to make this card-mark elision safe. |
|
3195 return; |
|
3196 } |
|
3197 |
3189 if (!use_precise) { |
3198 if (!use_precise) { |
3190 // All card marks for a (non-array) instance are in one place: |
3199 // All card marks for a (non-array) instance are in one place: |
3191 adr = obj; |
3200 adr = obj; |
3192 } |
3201 } |
3193 // (Else it's an array (or unknown), and we want more precise card marks.) |
3202 // (Else it's an array (or unknown), and we want more precise card marks.) |