351 template <class T> void do_oop_work(T* p) { |
351 template <class T> void do_oop_work(T* p) { |
352 HeapWord* jp = (HeapWord*)p; |
352 HeapWord* jp = (HeapWord*)p; |
353 assert(jp >= _begin && jp < _end, |
353 assert(jp >= _begin && jp < _end, |
354 err_msg("Error: jp " PTR_FORMAT " should be within " |
354 err_msg("Error: jp " PTR_FORMAT " should be within " |
355 "[_begin, _end) = [" PTR_FORMAT "," PTR_FORMAT ")", |
355 "[_begin, _end) = [" PTR_FORMAT "," PTR_FORMAT ")", |
356 _begin, _end)); |
356 jp, _begin, _end)); |
357 oop obj = oopDesc::load_decode_heap_oop(p); |
357 oop obj = oopDesc::load_decode_heap_oop(p); |
358 guarantee(obj == NULL || (HeapWord*)obj >= _boundary, |
358 guarantee(obj == NULL || (HeapWord*)obj >= _boundary, |
359 err_msg("pointer " PTR_FORMAT " at " PTR_FORMAT " on " |
359 err_msg("pointer " PTR_FORMAT " at " PTR_FORMAT " on " |
360 "clean card crosses boundary" PTR_FORMAT, |
360 "clean card crosses boundary" PTR_FORMAT, |
361 (HeapWord*)obj, jp, _boundary)); |
361 (HeapWord*)obj, jp, _boundary)); |