bool FrSymbol::lockFrames(FrList *locklist) { if (VFrame_Info) { //!!!for now, just do one at a time while (locklist) { if (!((FrSymbol*)(locklist->first()))->lockFrame()) return false ; // failed locklist = locklist->rest() ; } return true ; // successful } else { while (locklist) { FrFrame *fr = ((FrSymbol*)(locklist->first()))->symbolFrame() ; if (fr) fr->setLock(true) ; locklist = locklist->rest() ; } return true ; // successful } }
bool FrSymbol::unlockFrame() { FrFrame *fr = symbolFrame() ; // don't use find_vframe above, to avoid pulling in frame if not already // in memory if (fr && fr->isLocked() && VFrame_Info) { if (VFrame_Info->unlockFrame(this)) fr->setLock(false) ; else return false ; } return true ; }
FrFrame *FrSymbol::lockFrame() { FrFrame *fr = find_vframe_inline(this) ; if (fr && !fr->isLocked() && VFrame_Info) { if (VFrame_Info->lockFrame(this)) fr->setLock(true) ; else { FrWarningVA("unable to lock frame %s",symbolName()) ; return 0 ; } } return fr ; }