diff --git a/doc/api/vm.md b/doc/api/vm.md index aa99c8430767a0a..bcd0de34b45ae10 100644 --- a/doc/api/vm.md +++ b/doc/api/vm.md @@ -126,6 +126,16 @@ 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 going to be +compiled when they are invoked the first time. The code cache serializes the +metadata that V8 currently knows about the `Script` that it can use to speed up +future compilations. + ```js const script = new vm.Script(` function add(a, b) { @@ -135,11 +145,14 @@ function add(a, b) { const x = add(1, 2); `); -const cacheWithoutX = script.createCachedData(); +const cacheWithoutAdd = script.createCachedData(); +// In `cacheWithoutAdd` the function `add()` is marked for full compilation +// upon invocation. script.runInThisContext(); -const cacheWithX = script.createCachedData(); +const cacheWithAdd = script.createCachedData(); +// `cacheWithAdd` contains fully compiled function `add()`. ``` ### `script.runInContext(contextifiedObject[, options])` @@ -780,6 +793,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;');