deadCodeElimination() — react Function Reference
Architecture documentation for the deadCodeElimination() function in DeadCodeElimination.ts from the react codebase.
Entity Profile
Dependency Diagram
graph TD e6e7641a_0356_e256_1ee6_a60705f7edfe["deadCodeElimination()"] 12a58551_b77c_3215_7e97_0c27aabd262e["DeadCodeElimination.ts"] e6e7641a_0356_e256_1ee6_a60705f7edfe -->|defined in| 12a58551_b77c_3215_7e97_0c27aabd262e 607124e3_c223_e210_7b0a_5f166993a9e2["outlineJsxImpl()"] 607124e3_c223_e210_7b0a_5f166993a9e2 -->|calls| e6e7641a_0356_e256_1ee6_a60705f7edfe b86031b6_78ac_d498_c775_7aedeaf6521e["findReferencedIdentifiers()"] e6e7641a_0356_e256_1ee6_a60705f7edfe -->|calls| b86031b6_78ac_d498_c775_7aedeaf6521e 1ddcaaa6_a274_5751_db05_5448b1a769b9["isIdOrNameUsed()"] e6e7641a_0356_e256_1ee6_a60705f7edfe -->|calls| 1ddcaaa6_a274_5751_db05_5448b1a769b9 c447b97e_0b8e_b187_e3a8_4be412d6f495["retainWhere()"] e6e7641a_0356_e256_1ee6_a60705f7edfe -->|calls| c447b97e_0b8e_b187_e3a8_4be412d6f495 b0733383_adae_e3a5_c873_9a645cf0ce31["rewriteInstruction()"] e6e7641a_0356_e256_1ee6_a60705f7edfe -->|calls| b0733383_adae_e3a5_c873_9a645cf0ce31 style e6e7641a_0356_e256_1ee6_a60705f7edfe fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
compiler/packages/babel-plugin-react-compiler/src/Optimization/DeadCodeElimination.ts lines 32–70
export function deadCodeElimination(fn: HIRFunction): void {
/**
* Phase 1: Find/mark all referenced identifiers
* Usages may be visited AFTER declarations if there are circular phi / data dependencies
* between blocks, so we wait to sweep until after fixed point iteration is complete
*/
const state = findReferencedIdentifiers(fn);
/**
* Phase 2: Prune / sweep unreferenced identifiers and instructions
* as possible (subject to HIR structural constraints)
*/
for (const [, block] of fn.body.blocks) {
for (const phi of block.phis) {
if (!state.isIdOrNameUsed(phi.place.identifier)) {
block.phis.delete(phi);
}
}
retainWhere(block.instructions, instr =>
state.isIdOrNameUsed(instr.lvalue.identifier),
);
// Rewrite retained instructions
for (let i = 0; i < block.instructions.length; i++) {
const isBlockValue =
block.kind !== 'block' && i === block.instructions.length - 1;
if (!isBlockValue) {
rewriteInstruction(block.instructions[i], state);
}
}
}
/**
* Constant propagation and DCE may have deleted or rewritten instructions
* that reference context variables.
*/
retainWhere(fn.context, contextVar =>
state.isIdOrNameUsed(contextVar.identifier),
);
}
Domain
Subdomains
Called By
Source
Frequently Asked Questions
What does deadCodeElimination() do?
deadCodeElimination() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/Optimization/DeadCodeElimination.ts.
Where is deadCodeElimination() defined?
deadCodeElimination() is defined in compiler/packages/babel-plugin-react-compiler/src/Optimization/DeadCodeElimination.ts at line 32.
What does deadCodeElimination() call?
deadCodeElimination() calls 4 function(s): findReferencedIdentifiers, isIdOrNameUsed, retainWhere, rewriteInstruction.
What calls deadCodeElimination()?
deadCodeElimination() is called by 1 function(s): outlineJsxImpl.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free