< prev index next >

src/share/vm/gc/g1/dirtyCardQueue.cpp

Print this page
rev 12859 : imported patch pqsize


 140                           max_completed_queue,
 141                           fl_owner);
 142   set_buffer_size(G1UpdateBufferSize);
 143   _shared_dirty_card_queue.set_lock(lock);
 144   if (init_free_ids) {
 145     _free_ids = new FreeIdSet(num_par_ids(), _cbl_mon);
 146   }
 147 }
 148 
 149 void DirtyCardQueueSet::handle_zero_index_for_thread(JavaThread* t) {
 150   t->dirty_card_queue().handle_zero_index();
 151 }
 152 
 153 bool DirtyCardQueueSet::apply_closure_to_buffer(CardTableEntryClosure* cl,
 154                                                 BufferNode* node,
 155                                                 bool consume,
 156                                                 uint worker_i) {
 157   if (cl == NULL) return true;
 158   bool result = true;
 159   void** buf = BufferNode::make_buffer_from_node(node);
 160   size_t limit = DirtyCardQueue::byte_index_to_index(buffer_size());
 161   size_t i = DirtyCardQueue::byte_index_to_index(node->index());
 162   for ( ; i < limit; ++i) {
 163     jbyte* card_ptr = static_cast<jbyte*>(buf[i]);
 164     assert(card_ptr != NULL, "invariant");
 165     if (!cl->do_card_ptr(card_ptr, worker_i)) {
 166       result = false;           // Incomplete processing.
 167       break;
 168     }
 169   }
 170   if (consume) {
 171     size_t new_index = DirtyCardQueue::index_to_byte_index(i);
 172     assert(new_index <= buffer_size(), "invariant");
 173     node->set_index(new_index);
 174   }
 175   return result;
 176 }
 177 
 178 #ifndef ASSERT
 179 #define assert_fully_consumed(node, buffer_size)
 180 #else
 181 #define assert_fully_consumed(node, buffer_size)                \
 182   do {                                                          \
 183     size_t _afc_index = (node)->index();                        \
 184     size_t _afc_size = (buffer_size);                           \
 185     assert(_afc_index == _afc_size,                             \
 186            "Buffer was not fully consumed as claimed: index: "  \
 187            SIZE_FORMAT ", size: " SIZE_FORMAT,                  \
 188             _afc_index, _afc_size);                             \
 189   } while (0)
 190 #endif // ASSERT
 191 
 192 bool DirtyCardQueueSet::mut_process_buffer(BufferNode* node) {
 193   guarantee(_free_ids != NULL, "must be");




 140                           max_completed_queue,
 141                           fl_owner);
 142   set_buffer_size(G1UpdateBufferSize);
 143   _shared_dirty_card_queue.set_lock(lock);
 144   if (init_free_ids) {
 145     _free_ids = new FreeIdSet(num_par_ids(), _cbl_mon);
 146   }
 147 }
 148 
 149 void DirtyCardQueueSet::handle_zero_index_for_thread(JavaThread* t) {
 150   t->dirty_card_queue().handle_zero_index();
 151 }
 152 
 153 bool DirtyCardQueueSet::apply_closure_to_buffer(CardTableEntryClosure* cl,
 154                                                 BufferNode* node,
 155                                                 bool consume,
 156                                                 uint worker_i) {
 157   if (cl == NULL) return true;
 158   bool result = true;
 159   void** buf = BufferNode::make_buffer_from_node(node);
 160   size_t i = node->index();
 161   for (size_t limit = buffer_size(); i < limit; ++i) {

 162     jbyte* card_ptr = static_cast<jbyte*>(buf[i]);
 163     assert(card_ptr != NULL, "invariant");
 164     if (!cl->do_card_ptr(card_ptr, worker_i)) {
 165       result = false;           // Incomplete processing.
 166       break;
 167     }
 168   }
 169   if (consume) {
 170     assert(i <= buffer_size(), "invariant");
 171     node->set_index(i);

 172   }
 173   return result;
 174 }
 175 
 176 #ifndef ASSERT
 177 #define assert_fully_consumed(node, buffer_size)
 178 #else
 179 #define assert_fully_consumed(node, buffer_size)                \
 180   do {                                                          \
 181     size_t _afc_index = (node)->index();                        \
 182     size_t _afc_size = (buffer_size);                           \
 183     assert(_afc_index == _afc_size,                             \
 184            "Buffer was not fully consumed as claimed: index: "  \
 185            SIZE_FORMAT ", size: " SIZE_FORMAT,                  \
 186             _afc_index, _afc_size);                             \
 187   } while (0)
 188 #endif // ASSERT
 189 
 190 bool DirtyCardQueueSet::mut_process_buffer(BufferNode* node) {
 191   guarantee(_free_ids != NULL, "must be");


< prev index next >