void save_line(Cacheline l) { int cl_bytes_used=0; int sum_accesses=0; int max_accesses=0; int i; SectionNode* nextSection; for(i=0;i<LINESIZE;++i) { if(l.accesses[i]>0) cl_bytes_used++; sum_accesses+=l.accesses[i]; if(l.accesses[i]>max_accesses) max_accesses=l.accesses[i]; } if(max_accesses==0) return; int cl_homogenity=((float)(sum_accesses)/(float)(LINESIZE))/(float)max_accesses*100.0f; if(sum_accesses>0) { nextSection=l.sections.first; while(nextSection!=NULL) { nextSection->section->bytes_used[cl_bytes_used]++; nextSection->section->homogenity[cl_homogenity]++; nextSection->section->misses++; nextSection=nextSection->next; } freeSectionList(&l.sections,TRUE); } }
void Fini( void ) { freeSectionList( &Sections ); freeLabelList( 0 ); ORLFileScan( ObjFileHnd, NULL, &SectionFini ); if( Options & PRINT_PUBLICS ) { freePublics(); } FreeHashTables(); FreeServicesUsed(); CloseFiles(); MemPrtList(); MemClose(); MsgFini(); }