// 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; }
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); }