Home / Function/ markPredecessors() — react Function Reference

markPredecessors() — react Function Reference

Architecture documentation for the markPredecessors() function in HIRBuilder.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  6d209f7d_6d38_4dee_c66c_76af0358f508["markPredecessors()"]
  df6865e0_b573_e905_84d6_4eb6b419a888["HIRBuilder.ts"]
  6d209f7d_6d38_4dee_c66c_76af0358f508 -->|defined in| df6865e0_b573_e905_84d6_4eb6b419a888
  67879f67_c0fc_dc2d_b736_b9213153bc4a["buildReactiveScopeTerminalsHIR()"]
  67879f67_c0fc_dc2d_b736_b9213153bc4a -->|calls| 6d209f7d_6d38_4dee_c66c_76af0358f508
  5dec5bb8_e0f9_d79d_1c1d_65a05ff57391["build()"]
  5dec5bb8_e0f9_d79d_1c1d_65a05ff57391 -->|calls| 6d209f7d_6d38_4dee_c66c_76af0358f508
  7b930d0b_9ec9_a382_a51f_3ffb682d5b9a["mergeConsecutiveBlocks()"]
  7b930d0b_9ec9_a382_a51f_3ffb682d5b9a -->|calls| 6d209f7d_6d38_4dee_c66c_76af0358f508
  3522f83b_2dff_3c9f_920f_3e428eb62b31["inferEffectDependencies()"]
  3522f83b_2dff_3c9f_920f_3e428eb62b31 -->|calls| 6d209f7d_6d38_4dee_c66c_76af0358f508
  d77babff_42d3_5fdf_4059_c0b9e7cfaeb0["inlineImmediatelyInvokedFunctionExpressions()"]
  d77babff_42d3_5fdf_4059_c0b9e7cfaeb0 -->|calls| 6d209f7d_6d38_4dee_c66c_76af0358f508
  fbdc3953_3621_331c_a5b1_d3199bea5254["constantPropagationImpl()"]
  fbdc3953_3621_331c_a5b1_d3199bea5254 -->|calls| 6d209f7d_6d38_4dee_c66c_76af0358f508
  876d58c8_bfce_a9d8_22c0_b40cc7e22553["inlineJsxTransform()"]
  876d58c8_bfce_a9d8_22c0_b40cc7e22553 -->|calls| 6d209f7d_6d38_4dee_c66c_76af0358f508
  041ca752_10c1_3cda_1f5c_02f44a01310e["invariant()"]
  6d209f7d_6d38_4dee_c66c_76af0358f508 -->|calls| 041ca752_10c1_3cda_1f5c_02f44a01310e
  d737cb4c_53f4_75b4_2d58_268e2f73fde4["eachTerminalSuccessor()"]
  6d209f7d_6d38_4dee_c66c_76af0358f508 -->|calls| d737cb4c_53f4_75b4_2d58_268e2f73fde4
  style 6d209f7d_6d38_4dee_c66c_76af0358f508 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/HIR/HIRBuilder.ts lines 828–859

export function markPredecessors(func: HIR): void {
  for (const [, block] of func.blocks) {
    block.preds.clear();
  }
  const visited: Set<BlockId> = new Set();
  function visit(blockId: BlockId, prevBlock: BasicBlock | null): void {
    const block = func.blocks.get(blockId)!;
    if (block == null) {
      return;
    }
    CompilerError.invariant(block != null, {
      reason: 'unexpected missing block',
      description: `block ${blockId}`,
      loc: GeneratedSource,
    });
    if (prevBlock) {
      block.preds.add(prevBlock.id);
    }

    if (visited.has(blockId)) {
      return;
    }
    visited.add(blockId);

    const {terminal} = block;

    for (const successor of eachTerminalSuccessor(terminal)) {
      visit(successor, block);
    }
  }
  visit(func.entry, null);
}

Subdomains

Frequently Asked Questions

What does markPredecessors() do?
markPredecessors() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/HIR/HIRBuilder.ts.
Where is markPredecessors() defined?
markPredecessors() is defined in compiler/packages/babel-plugin-react-compiler/src/HIR/HIRBuilder.ts at line 828.
What does markPredecessors() call?
markPredecessors() calls 2 function(s): eachTerminalSuccessor, invariant.
What calls markPredecessors()?
markPredecessors() is called by 7 function(s): build, buildReactiveScopeTerminalsHIR, constantPropagationImpl, inferEffectDependencies, inlineImmediatelyInvokedFunctionExpressions, inlineJsxTransform, mergeConsecutiveBlocks.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free