23 */ |
23 */ |
24 |
24 |
25 # include "incls/_precompiled.incl" |
25 # include "incls/_precompiled.incl" |
26 # include "incls/_barrierSet.cpp.incl" |
26 # include "incls/_barrierSet.cpp.incl" |
27 |
27 |
28 // count is in HeapWord's |
28 // count is number of array elements being written |
29 void BarrierSet::static_write_ref_array_pre(HeapWord* start, size_t count) { |
29 void BarrierSet::static_write_ref_array_pre(HeapWord* start, size_t count) { |
30 Universe::heap()->barrier_set()->write_ref_array_pre(MemRegion(start, start + count)); |
30 assert(count <= (size_t)max_intx, "count too large"); |
|
31 #if 0 |
|
32 warning("Pre: \t" INTPTR_FORMAT "[" SIZE_FORMAT "]\t", |
|
33 start, count); |
|
34 #endif |
|
35 if (UseCompressedOops) { |
|
36 Universe::heap()->barrier_set()->write_ref_array_pre((narrowOop*)start, (int)count); |
|
37 } else { |
|
38 Universe::heap()->barrier_set()->write_ref_array_pre( (oop*)start, (int)count); |
|
39 } |
31 } |
40 } |
32 |
41 |
33 // count is in HeapWord's |
42 // count is number of array elements being written |
34 void BarrierSet::static_write_ref_array_post(HeapWord* start, size_t count) { |
43 void BarrierSet::static_write_ref_array_post(HeapWord* start, size_t count) { |
35 Universe::heap()->barrier_set()->write_ref_array_work(MemRegion(start, start + count)); |
44 assert(count <= (size_t)max_intx, "count too large"); |
|
45 HeapWord* end = start + objArrayOopDesc::array_size((int)count); |
|
46 #if 0 |
|
47 warning("Post:\t" INTPTR_FORMAT "[" SIZE_FORMAT "] : [" INTPTR_FORMAT","INTPTR_FORMAT")\t", |
|
48 start, count, start, end); |
|
49 #endif |
|
50 Universe::heap()->barrier_set()->write_ref_array_work(MemRegion(start, end)); |
36 } |
51 } |