HashSet<const NaturalLoop*> findLoopsContainingLoopHintWithoutOSREnter(const NaturalLoops& naturalLoops, FTL::CapabilityLevel level) { HashSet<const NaturalLoop*> loopsContainingLoopHintWithoutOSREnter; for (BasicBlock* block : m_graph.blocksInNaturalOrder()) { for (unsigned nodeIndex = 0; nodeIndex < block->size(); ++nodeIndex) { Node* node = block->at(nodeIndex); if (node->op() != LoopHint) continue; if (!canOSREnterAtLoopHint(level, block, nodeIndex)) { const NaturalLoop* loop = naturalLoops.innerMostLoopOf(block); while (loop) { loopsContainingLoopHintWithoutOSREnter.add(loop); loop = naturalLoops.innerMostOuterLoop(*loop); } } } } return loopsContainingLoopHintWithoutOSREnter; }