Home / Function/ deadCodeElimination() — react Function Reference

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

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