Skip to content

src: simplify NativeModule caching and remove redudant data

  • Remove NativeModule._source - the compilation is now entirely done in C++ and process.binding('natives') is implemented directly in the binding loader so there is no need to store additional source code strings.
  • Instead of using an object as NativeModule._cached and insert into it after compilation of each native module, simply prebuild a JS map filled with all the native modules and infer the state of compilation through mod.loading/mod.loaded.
  • Rename NativeModule.nonInternalExists to NativeModule.canBeRequiredByUsers and precompute that property for all the native modules during bootstrap instead of branching in every require call during runtime. This also fixes the bug where worker_threads can be made available with --expose-internals
  • Rename NativeModule.requireForDeps to NativeModule.requireWithFallbackInDeps.
  • Add a test to make sure we do not accidentally leak any module to the global namespace.
Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

Merge request reports

Loading