diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2d5eac43a880e4..72ddc64c563cde 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,7 +28,8 @@ release.
-12.16.0
+12.16.1
+12.16.0
12.15.0
12.14.1
12.14.0
diff --git a/configure.py b/configure.py
index 6537a62d3954d8..14f5665e0299a2 100755
--- a/configure.py
+++ b/configure.py
@@ -401,12 +401,13 @@
parser.add_option('--use-largepages',
action='store_true',
dest='node_use_large_pages',
- help='This option has no effect. --use-largepages is now a runtime option.')
+ help='build with Large Pages support. This feature is supported only on Linux kernel' +
+ '>= 2.6.38 with Transparent Huge pages enabled and FreeBSD')
parser.add_option('--use-largepages-script-lld',
action='store_true',
dest='node_use_large_pages_script_lld',
- help='This option has no effect. --use-largepages is now a runtime option.')
+ help='link against the LLVM ld linker script. Implies -fuse-ld=lld in the linker flags')
intl_optgroup.add_option('--with-intl',
action='store',
@@ -1060,12 +1061,27 @@ def configure_node(o):
else:
o['variables']['node_use_dtrace'] = 'false'
- if options.node_use_large_pages or options.node_use_large_pages_script_lld:
- warn('''The `--use-largepages` and `--use-largepages-script-lld` options
- have no effect during build time. Support for mapping to large pages is
- now a runtime option of Node.js. Run `node --use-largepages` or add
- `--use-largepages` to the `NODE_OPTIONS` environment variable once
- Node.js is built to enable mapping to large pages.''')
+ if options.node_use_large_pages and not flavor in ('linux', 'freebsd', 'mac'):
+ raise Exception(
+ 'Large pages are supported only on Linux, FreeBSD and MacOS Systems.')
+ if options.node_use_large_pages and flavor in ('linux', 'freebsd', 'mac'):
+ if options.shared or options.enable_static:
+ raise Exception(
+ 'Large pages are supported only while creating node executable.')
+ if target_arch!="x64":
+ raise Exception(
+ 'Large pages are supported only x64 platform.')
+ if flavor == 'mac':
+ info('macOS server with 32GB or more is recommended')
+ if flavor == 'linux':
+ # Example full version string: 2.6.32-696.28.1.el6.x86_64
+ FULL_KERNEL_VERSION=os.uname()[2]
+ KERNEL_VERSION=FULL_KERNEL_VERSION.split('-')[0]
+ if KERNEL_VERSION < "2.6.38" and flavor == 'linux':
+ raise Exception(
+ 'Large pages need Linux kernel version >= 2.6.38')
+ o['variables']['node_use_large_pages'] = b(options.node_use_large_pages)
+ o['variables']['node_use_large_pages_script_lld'] = b(options.node_use_large_pages_script_lld)
if options.no_ifaddrs:
o['defines'] += ['SUNOS_NO_IFADDRS']
diff --git a/doc/api/cli.md b/doc/api/cli.md
index 979c1214f5c59e..7703d0b6bd99d2 100644
--- a/doc/api/cli.md
+++ b/doc/api/cli.md
@@ -881,22 +881,6 @@ environment variables.
See `SSL_CERT_DIR` and `SSL_CERT_FILE`.
-### `--use-largepages=mode`
-
-
-Re-map the Node.js static code to large memory pages at startup. If supported on
-the target system, this will cause the Node.js static code to be moved onto 2
-MiB pages instead of 4 KiB pages.
-
-The following values are valid for `mode`:
-* `off`: No mapping will be attempted. This is the default.
-* `on`: If supported by the OS, mapping will be attempted. Failure to map will
- be ignored and a message will be printed to standard error.
-* `silent`: If supported by the OS, mapping will be attempted. Failure to map
- will be ignored and will not be reported.
-
### `--v8-options`
-
-This symbol shall be used to install a listener for only monitoring `'error'`
-events. Listeners installed using this symbol are called before the regular
-`'error'` listeners are called.
-
-Installing a listener using this symbol does not change the behavior once an
-`'error'` event is emitted, therefore the process will still crash if no
-regular `'error'` listener is installed.
-
### `emitter.addListener(eventName, listener)`
|