diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2018-11-21 07:31:25 +0800 |
---|---|---|
committer | Joyee Cheung <joyeec9h3@gmail.com> | 2018-11-29 01:52:54 +0800 |
commit | 333783643e71aeef3940fae215e7cf52ef00d5f0 (patch) | |
tree | 6338e974febd1685dcf1f4d921bde577f4a274dc /test/parallel | |
parent | 8ce0d4fdf15d4ffdc4cf13f1db44eb1f7556741f (diff) | |
download | android-node-v8-333783643e71aeef3940fae215e7cf52ef00d5f0.tar.gz android-node-v8-333783643e71aeef3940fae215e7cf52ef00d5f0.tar.bz2 android-node-v8-333783643e71aeef3940fae215e7cf52ef00d5f0.zip |
console: lazy load process.stderr and process.stdout
This patch:
- Refactors the Console constructor: moves the property binding code
into and the writable streams binding code into two methods defined
on the Console.prototype with symbols.
- Refactors the global console creation: we only need to share the
property binding code from the Console constructor. To bind the
streams we can lazy load `process.stdio` and `process.stderr`
so that we don't create these streams when they are not used.
This significantly reduces the number of modules loaded during
bootstrap. Also, by calling the refactored-out method directly
we can skip the unnecessary typechecks when creating the global
console and there is no need to create a temporary Console
anymore.
- Refactors the error handler creation and the `write` method:
use a `kUseStdout` symbol to tell the internals which stream
should be loaded from the console instance. Also put the
`write` method on the Console prototype so it just loads
other properties directly off the console instance which simplifies
the call sites.
Also leaves a few TODOs for further refactoring of the console
bootstrap.
PR-URL: https://github.com/nodejs/node/pull/24534
Reviewed-By: Gus Caplan <me@gus.host>
Diffstat (limited to 'test/parallel')
-rw-r--r-- | test/parallel/test-bootstrap-modules.js | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/test/parallel/test-bootstrap-modules.js b/test/parallel/test-bootstrap-modules.js index 70011637e0..272dec4006 100644 --- a/test/parallel/test-bootstrap-modules.js +++ b/test/parallel/test-bootstrap-modules.js @@ -1,14 +1,16 @@ -/* eslint-disable node-core/required-modules */ - +// Flags: --expose-internals 'use strict'; -// Ordinarily test files must require('common') but that action causes -// the global console to be compiled, defeating the purpose of this test. -// This makes sure no additional files are added without carefully considering -// lazy loading. Please adjust the value if necessary. - +// This list must be computed before we require any modules to +// to eliminate the noise. const list = process.moduleLoadList.slice(); +const common = require('../common'); const assert = require('assert'); -assert(list.length <= 78, list); +const isMainThread = common.isMainThread; +const kMaxModuleCount = isMainThread ? 56 : 78; + +assert(list.length <= kMaxModuleCount, + `Total length: ${list.length}\n` + list.join('\n') +); |