예제 #1
0
 // add a new entries to the resolved_references map (for invokedynamic and invokehandle only)
 int add_invokedynamic_resolved_references_entries(int cp_index, int cache_index) {
   assert(_resolved_reference_limit >= 0, "must add indy refs after first iteration");
   int ref_index = -1;
   for (int entry = 0; entry < ConstantPoolCacheEntry::_indy_resolved_references_entries; entry++) {
     const int index = _resolved_references_map.append(cp_index);  // many-to-one
     assert(index >= _resolved_reference_limit, "");
     if (entry == 0) {
       ref_index = index;
     }
     assert((index - entry) == ref_index, "entries must be consecutive");
     _invokedynamic_references_map.at_put_grow(index, cache_index, -1);
   }
   return ref_index;
 }
예제 #2
0
 virtual void block_do(BlockBegin* block) {
   assert(_tags->at_grow(block->block_id(), -1) == -1 || _tags->at_grow(block->block_id(), -1) == _tag, "this block is part of two loops");
   _tags->at_put_grow(block->block_id(), _tag, -1);
 }