Home / Function/ collectMaybeMemoDependencies() — react Function Reference

collectMaybeMemoDependencies() — react Function Reference

Architecture documentation for the collectMaybeMemoDependencies() function in DropManualMemoization.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  3bcb17a7_3310_8c3d_0a8d_2a7f62d66083["collectMaybeMemoDependencies()"]
  4b3f307b_2e5b_6c5a_0729_065bd25db103["DropManualMemoization.ts"]
  3bcb17a7_3310_8c3d_0a8d_2a7f62d66083 -->|defined in| 4b3f307b_2e5b_6c5a_0729_065bd25db103
  bd1bab6c_5b88_55cf_c015_7e286c9e8978["collectTemporaries()"]
  bd1bab6c_5b88_55cf_c015_7e286c9e8978 -->|calls| 3bcb17a7_3310_8c3d_0a8d_2a7f62d66083
  2430e594_74e0_ca9a_14be_251ff6fa4bb8["recordDepsInValue()"]
  2430e594_74e0_ca9a_14be_251ff6fa4bb8 -->|calls| 3bcb17a7_3310_8c3d_0a8d_2a7f62d66083
  style 3bcb17a7_3310_8c3d_0a8d_2a7f62d66083 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/babel-plugin-react-compiler/src/Inference/DropManualMemoization.ts lines 55–122

export function collectMaybeMemoDependencies(
  value: InstructionValue,
  maybeDeps: Map<IdentifierId, ManualMemoDependency>,
  optional: boolean,
): ManualMemoDependency | null {
  switch (value.kind) {
    case 'LoadGlobal': {
      return {
        root: {
          kind: 'Global',
          identifierName: value.binding.name,
        },
        path: [],
        loc: value.loc,
      };
    }
    case 'PropertyLoad': {
      const object = maybeDeps.get(value.object.identifier.id);
      if (object != null) {
        return {
          root: object.root,
          // TODO: determine if the access is optional
          path: [...object.path, {property: value.property, optional}],
          loc: value.loc,
        };
      }
      break;
    }

    case 'LoadLocal':
    case 'LoadContext': {
      const source = maybeDeps.get(value.place.identifier.id);
      if (source != null) {
        return source;
      } else if (
        value.place.identifier.name != null &&
        value.place.identifier.name.kind === 'named'
      ) {
        return {
          root: {
            kind: 'NamedLocal',
            value: {...value.place},
            constant: false,
          },
          path: [],
          loc: value.place.loc,
        };
      }
      break;
    }
    case 'StoreLocal': {
      /*
       * Value blocks rely on StoreLocal to populate their return value.
       * We need to track these as optional property chains are valid in
       * source depslists
       */
      const lvalue = value.lvalue.place.identifier;
      const rvalue = value.value.identifier.id;
      const aliased = maybeDeps.get(rvalue);
      if (aliased != null && lvalue.name?.kind !== 'named') {
        maybeDeps.set(lvalue.id, aliased);
        return aliased;
      }
      break;
    }
  }
  return null;
}

Domain

Subdomains

Frequently Asked Questions

What does collectMaybeMemoDependencies() do?
collectMaybeMemoDependencies() is a function in the react codebase, defined in compiler/packages/babel-plugin-react-compiler/src/Inference/DropManualMemoization.ts.
Where is collectMaybeMemoDependencies() defined?
collectMaybeMemoDependencies() is defined in compiler/packages/babel-plugin-react-compiler/src/Inference/DropManualMemoization.ts at line 55.
What calls collectMaybeMemoDependencies()?
collectMaybeMemoDependencies() is called by 2 function(s): collectTemporaries, recordDepsInValue.

Analyze Your Own Codebase

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

Try Supermodel Free