Files
7759ea32c0 perf(turbopack): Use last side effect as ModuleEvaluation fragment (#76940)
### What?

Use the last side effect fragment instead of the module evaluation fragment.

### Why?

Module evaluation fragment is a waste of memory.

### How?

Closes PACK-3440

---------

Co-authored-by: Tobias Koppers <[email protected]>
2025-03-11 18:57:50 +09:00

2.0 KiB

Items

Count: 3

Item 1: Stmt 0, Normal

a = 1;

  • Write: a

Item 2: Stmt 1, VarDeclarator(0)

var a;

  • Declares: a
  • Write: a

Item 3: Stmt 2, Normal

console.log(a);

  • Side effects
  • Reads: a

Phase 1

graph TD
    Item1;
    Item2;
    Item3;

Phase 2

graph TD
    Item1;
    Item2;
    Item3;
    Item1 --> Item2;
    Item3 --> Item2;

Phase 3

graph TD
    Item1;
    Item2;
    Item3;
    Item1 --> Item2;
    Item3 --> Item2;

Phase 4

graph TD
    Item1;
    Item2;
    Item3;
    Item1 --> Item2;
    Item3 --> Item2;

Final

graph TD
    N0["Items: [ItemId(0, Normal)]"];
    N1["Items: [ItemId(1, VarDeclarator(0))]"];
    N2["Items: [ItemId(2, Normal)]"];
    N0 --> N1;
    N2 --> N1;

Entrypoints

{
    ModuleEvaluation: 2,
    Exports: 3,
}

Modules (dev)

Part 0

import { a as a } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: -1
};
a = 1;

Part 1

var a;
export { a as a } from "__TURBOPACK_VAR__" assert {
    __turbopack_var__: true
};

Part 2

import { a as a } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: -1
};
console.log(a);
export { };

Part 3


Merged (module eval)

import { a as a } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: -1
};
console.log(a);
export { };

Entrypoints

{
    ModuleEvaluation: 2,
    Exports: 3,
}

Modules (prod)

Part 0

import { a as a } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: -1
};
a = 1;

Part 1

var a;
export { a as a } from "__TURBOPACK_VAR__" assert {
    __turbopack_var__: true
};

Part 2

import { a as a } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: -1
};
console.log(a);
export { };

Part 3


Merged (module eval)

import { a as a } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: -1
};
console.log(a);
export { };