Lines Matching defs:frontier

320 // chunks. Marks those chunks with |tag| and adds them to |frontier|.
324 // so |frontier| = 0.
326 void ScanForPointers(uptr begin, uptr end, Frontier *frontier,
368 if (frontier)
369 frontier->push_back(chunk);
373 void ScanRangeForPointers(uptr begin, uptr end, Frontier *frontier,
376 ScanForPointers(begin, end, frontier, region_type, tag, accessor);
380 void ScanGlobalRange(uptr begin, uptr end, Frontier *frontier) {
387 ScanRangeForPointers(begin, allocator_begin, frontier, "GLOBAL",
390 ScanRangeForPointers(allocator_end, end, frontier, "GLOBAL", kReachable);
392 ScanRangeForPointers(begin, end, frontier, "GLOBAL", kReachable);
397 void ScanRanges(const InternalMmapVector<Range> &ranges, Frontier *frontier,
400 ScanForPointers(ranges[i].begin, ranges[i].end, frontier, region_type,
406 Frontier *frontier) {
408 ScanRanges(ranges, frontier, "FAKE STACK", accessor);
425 static void ProcessThreadRegistry(Frontier *frontier) {
438 // Mark as reachable and add to frontier.
441 frontier->push_back(chunk);
450 Frontier *frontier, Accessor &accessor) {
474 ScanForPointers(registers_begin, registers_end, frontier, "REGISTERS",
499 ScanForPointers(stack_begin, stack_end, frontier, "STACK", kReachable,
502 ScanRanges(extra_ranges, frontier, "FAKE STACK", accessor);
512 ScanForPointers(tls_begin, tls_end, frontier, "TLS", kReachable,
516 ScanForPointers(tls_begin, cache_begin, frontier, "TLS", kReachable,
519 ScanForPointers(cache_end, tls_end, frontier, "TLS", kReachable,
531 ScanRanges(extra_ranges, frontier, "DTLS", accessor);
535 __libc_iterate_dynamic_tls(os_id, cb, frontier);
544 ScanForPointers(dtls_beg, dtls_end, frontier, "DTLS", kReachable,
558 Frontier *frontier, tid_t caller_tid,
584 ProcessThread(os_id, sp, registers, extra_ranges, frontier, accessor);
601 ProcessThread(os_id, sp, registers, extra_ranges, frontier, accessor);
607 ProcessThreadRegistry(frontier);
626 void ScanRootRegions(Frontier *frontier,
643 ScanRangeForPointers(r.begin, r.end, frontier, "ROOT", kReachable);
648 static void ProcessRootRegions(Frontier *frontier) {
657 ScanRootRegions(frontier, mapped_regions);
660 static void FloodFillTag(Frontier *frontier, ChunkTag tag) {
661 while (frontier->size()) {
662 uptr next_chunk = frontier->back();
663 frontier->pop_back();
665 ScanRangeForPointers(next_chunk, next_chunk + m.requested_size(), frontier,
677 /* frontier */ nullptr, "HEAP", kIndirectlyLeaked);
700 // frontier.
714 Frontier *frontier, tid_t caller_tid,
722 ForEachChunk(CollectIgnoredCb, frontier);
723 ProcessGlobalRegions(frontier);
724 ProcessThreads(suspended_threads, frontier, caller_tid, caller_sp);
725 ProcessRootRegions(frontier);
726 FloodFillTag(frontier, kReachable);
732 ProcessPlatformSpecificAllocations(frontier);
733 FloodFillTag(frontier, kReachable);
833 ClassifyAllChunks(suspended_threads, &param->frontier, param->caller_tid,