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);
}
Domain
Subdomains
Called By
Source
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