MCPcopy
hub / github.com/webpack/webpack / visitModules

Function visitModules

lib/buildChunkGraph.js:294–1331  ·  lib/buildChunkGraph.js::visitModules
(
	logger,
	compilation,
	inputEntrypointsAndModules,
	chunkGroupInfoMap,
	blockConnections,
	blocksWithNestedBlocks,
	allCreatedChunkGroups,
	maskByChunk
)

Source from the content-addressed store, hash-verified

292 * @param {MaskByChunk} maskByChunk module content mask by chunk
293 */
294const visitModules = (
295 logger,
296 compilation,
297 inputEntrypointsAndModules,
298 chunkGroupInfoMap,
299 blockConnections,
300 blocksWithNestedBlocks,
301 allCreatedChunkGroups,
302 maskByChunk
303) => {
304 const { moduleGraph, chunkGraph, moduleMemCaches } = compilation;
305
306 /** @type {Map<RuntimeSpec, BlockModulesMap>} */
307 const blockModulesRuntimeMap = new Map();
308
309 class="cm">// map containing the first extraction per root module,
310 class="cm">// other runtimes derive their result from it
311 /** @type {Map<Module, BlockModulesMap>} */
312 const firstBlockModulesMapByModule = new Map();
313
314 /** @type {Map<Module, number>} */
315 const ordinalByModule = new Map();
316
317 /**
318 * Gets module ordinal.
319 * @param {Module} module The module to look up
320 * @returns {number} The ordinal of the module in masks
321 */
322 const getModuleOrdinal = (module) => {
323 let ordinal = ordinalByModule.get(module);
324 if (ordinal === undefined) {
325 ordinal = ordinalByModule.size;
326 ordinalByModule.set(module, ordinal);
327 }
328 return ordinal;
329 };
330
331 for (const chunk of compilation.chunks) {
332 let mask = ZERO_BIGINT;
333 for (const m of chunkGraph.getChunkModulesIterable(chunk)) {
334 mask |= ONE_BIGINT << BigInt(getModuleOrdinal(m));
335 }
336 maskByChunk.set(chunk, mask);
337 }
338
339 /**
340 * Gets block modules.
341 * @param {DependenciesBlock} block block
342 * @param {RuntimeSpec} runtime runtime
343 * @returns {BlockModulesInFlattenTuples | undefined} block modules in flatten tuples
344 */
345 const getBlockModules = (block, runtime) => {
346 let blockModulesMap = blockModulesRuntimeMap.get(runtime);
347 if (blockModulesMap === undefined) {
348 /** @type {BlockModulesMap} */
349 blockModulesMap = new Map();
350 blockModulesRuntimeMap.set(runtime, blockModulesMap);
351 }

Callers 1

buildChunkGraphFunction · 0.85

Calls 15

getModuleOrdinalFunction · 0.85
getEntryRuntimeFunction · 0.85
processConnectQueueFunction · 0.85
getNumberOfParentsMethod · 0.80
getEntrypointChunkMethod · 0.80
timeMethod · 0.80
timeAggregateEndMethod · 0.80
timeEndMethod · 0.80

Tested by

no test coverage detected