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.4 KiB

Items

Count: 4

Item 1: Stmt 0, VarDeclarator(0)

const a = "a";

  • Declares: a
  • Write: a

Item 2: Stmt 1, VarDeclarator(0)

const b = "b";

  • Declares: b
  • Write: b

Phase 1

graph TD
    Item1;
    Item2;
    Item3;
    Item3["export a"];
    Item4;
    Item4["export b"];

Phase 2

graph TD
    Item1;
    Item2;
    Item3;
    Item3["export a"];
    Item4;
    Item4["export b"];
    Item3 --> Item1;
    Item4 --> Item2;

Phase 3

graph TD
    Item1;
    Item2;
    Item3;
    Item3["export a"];
    Item4;
    Item4["export b"];
    Item3 --> Item1;
    Item4 --> Item2;

Phase 4

graph TD
    Item1;
    Item2;
    Item3;
    Item3["export a"];
    Item4;
    Item4["export b"];
    Item3 --> Item1;
    Item4 --> Item2;

Final

graph TD
    N0["Items: [ItemId(0, VarDeclarator(0)), ItemId(Export((&quot;a&quot;, #2), &quot;a&quot;))]"];
    N1["Items: [ItemId(1, VarDeclarator(0)), ItemId(Export((&quot;b&quot;, #2), &quot;b&quot;))]"];

Entrypoints

{
    ModuleEvaluation: 3,
    Export(
        "a",
    ): 0,
    Export(
        "b",
    ): 1,
    Exports: 2,
}

Modules (dev)

Part 0

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

Part 1

const b = "b";
export { b };
export { b as b } from "__TURBOPACK_VAR__" assert {
    __turbopack_var__: true
};

Part 2

export { a } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: "export a"
};
export { b } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: "export b"
};

Part 3

export { };

Merged (module eval)

export { };

Entrypoints

{
    ModuleEvaluation: 3,
    Export(
        "a",
    ): 0,
    Export(
        "b",
    ): 1,
    Exports: 2,
}

Modules (prod)

Part 0

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

Part 1

const b = "b";
export { b };
export { b as b } from "__TURBOPACK_VAR__" assert {
    __turbopack_var__: true
};

Part 2

export { a } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: "export a"
};
export { b } from "__TURBOPACK_PART__" assert {
    __turbopack_part__: "export b"
};

Part 3

export { };

Merged (module eval)

export { };