src/third_party/mozjs/extract/js/src/devtools/rootAnalysis/loadCallgraph.js
// zero intset, will be removed from functionLimits.)
zero intset, will be removed from functionLimits.)
zero intset will be removed from functionLimits . )
function propagate_limits(worklist, functionLimits, calleesOf) {
    let top = worklist.length;
    while (top > 0) {
        const [caller, edge_limits, callercaller] = worklist[--top];
        const prev_limits = functionLimits[caller];
        if (prev_limits & ~edge_limits) {
            const new_limits = prev_limits & edge_limits;
            if (new_limits)
                functionLimits[caller] = new_limits;
            else
                delete functionLimits[caller];
            for (const {callee, limits} of (calleesOf[caller] || []))
                worklist[top++] = [callee, limits | edge_limits, caller];
        }
    }
}
function propagate_limits ( worklist , functionLimits , calleesOf ) { let top = worklist . length ; while ( top > 0 ) { const [ caller , edge_limits , callercaller ] = worklist [ -- top ] ; const prev_limits = functionLimits [ caller ] ; if ( prev_limits & ~ edge_limits ) { const new_limits = prev_limits & edge_limits ; if ( new_limits ) functionLimits [ caller ] = new_limits ; else delete functionLimits [ caller ] ; for ( const { callee , limits } of ( calleesOf [ caller ] || [ ] ) ) worklist [ top ++ ] = [ callee , limits | edge_limits , caller ] ; } } }
zero intset, will be removed from functionLimits.)
zero intset will be removed from functionLimits . )
// Consider caller where (graph) -> caller -> (0 or more callees) // 'callercaller' is for debugging. // Turning off a limit (or unvisited marker). Must recurse to the // children. But first, update this caller's limits: we just found // out it is reachable by an unlimited path, so it must be treated // as unlimited (with respect to that bit).