diff --git a/doc/api/vm.md b/doc/api/vm.md index aa99c8430767a0a..5ba1d713049c2c2 100644 --- a/doc/api/vm.md +++ b/doc/api/vm.md @@ -126,6 +126,15 @@ Creates a code cache that can be used with the `Script` constructor's `cachedData` option. Returns a `Buffer`. This method may be called at any time and any number of times. +The code cache of the `Script` doesn't contain any JavaScript observable +states. The code cache is safe to be saved along side the script source and +used to construct new `Script` instances multiple times. + +Functions in the `Script` source can be marked as lazily compiled and they are +not compiled at construction of the `Script`. These functions are forced to be +compiled when they are invoked the first time. The code cache serializes the +current compilation state. + ```js const script = new vm.Script(` function add(a, b) { @@ -135,11 +144,13 @@ function add(a, b) { const x = add(1, 2); `); -const cacheWithoutX = script.createCachedData(); +const cache1 = script.createCachedData(); +// cached1 contains function `add` with lazy compilation stub. script.runInThisContext(); -const cacheWithX = script.createCachedData(); +const cache2 = script.createCachedData(); +// cached2 contains compiled function `add`. ``` ### `script.runInContext(contextifiedObject[, options])` @@ -780,6 +791,15 @@ Creates a code cache that can be used with the `SourceTextModule` constructor's `cachedData` option. Returns a `Buffer`. This method may be called any number of times before the module has been evaluated. +The code cache of the `SourceTextModule` doesn't contain any JavaScript +observable states. The code cache is safe to be saved along side the script +source and used to construct new `SourceTextModule` instances multiple times. + +Functions in the `SourceTextModule` source can be marked as lazily compiled and +they are not compiled at construction of the `SourceTextModule`. These +functions are forced to be compiled when they are invoked the first time. The +code cache serializes the current compilation state. + ```js // Create an initial module const module = new vm.SourceTextModule('const a = 1;');