void Phrase::InitStartEndWord() { FactorCollection &factorCollection = FactorCollection::Instance(); Word startWord(Input); const Factor *factor = factorCollection.AddFactor(Input, 0, BOS_); // TODO - non-factored startWord.SetFactor(0, factor); PrependWord(startWord); Word endWord(Input); factor = factorCollection.AddFactor(Input, 0, EOS_); // TODO - non-factored endWord.SetFactor(0, factor); AddWord(endWord); }
inline bool G1CMBitMapRO::iterate(BitMapClosure* cl, MemRegion mr) { HeapWord* start_addr = MAX2(startWord(), mr.start()); HeapWord* end_addr = MIN2(endWord(), mr.end()); if (end_addr > start_addr) { // Right-open interval [start-offset, end-offset). BitMap::idx_t start_offset = heapWordToOffset(start_addr); BitMap::idx_t end_offset = heapWordToOffset(end_addr); start_offset = _bm.get_next_one_offset(start_offset, end_offset); while (start_offset < end_offset) { if (!cl->do_bit(start_offset)) { return false; } HeapWord* next_addr = MIN2(nextObject(offsetToHeapWord(start_offset)), end_addr); BitMap::idx_t next_offset = heapWordToOffset(next_addr); start_offset = _bm.get_next_one_offset(next_offset, end_offset); } } return true; }
inline bool CMSBitMap::isAllClear() const { assert_locked(); return getNextMarkedWordAddress(startWord()) >= endWord(); }