BlockListScanInfo(BlockList* blocks) : _info(new RegisterManager()), _had_call(false) { for (int n = 0; n < blocks->length(); n++) { BlockBegin* b = blocks->at(n); if (b->lir() != NULL) { traverse(b, b->lir()->instructions_list()); } // Registers may be used to hold the value // on the top of stack so check for that. check_stack(b->state()); check_stack(b->end()->state()); } if (_had_call) { for (int i = 0; i < FrameMap::nof_caller_save_cpu_regs; i++) { _info->lock(FrameMap::caller_save_cpu_reg_at(i)->as_rinfo()); } } }