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
Called By
Source
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