v8: migrate setFlagsFromString to internal/errors

PR-URL: https://github.com/nodejs/node/pull/16535
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
James M Snell 2017-10-26 16:31:23 -07:00
parent 65d2067936
commit 64168eb9b4
4 changed files with 22 additions and 15 deletions

View File

@ -133,10 +133,11 @@ For example:
} }
``` ```
## v8.setFlagsFromString(string) ## v8.setFlagsFromString(flags)
<!-- YAML <!-- YAML
added: v1.0.0 added: v1.0.0
--> -->
* `flags` {string}
The `v8.setFlagsFromString()` method can be used to programmatically set The `v8.setFlagsFromString()` method can be used to programmatically set
V8 command line flags. This method should be used with care. Changing settings V8 command line flags. This method should be used with care. Changing settings

View File

@ -15,6 +15,7 @@
'use strict'; 'use strict';
const { Buffer } = require('buffer'); const { Buffer } = require('buffer');
const errors = require('internal/errors');
const { const {
Serializer: _Serializer, Serializer: _Serializer,
Deserializer: _Deserializer Deserializer: _Deserializer
@ -32,7 +33,7 @@ class Deserializer extends _Deserializer { }
const { const {
cachedDataVersionTag, cachedDataVersionTag,
setFlagsFromString, setFlagsFromString: _setFlagsFromString,
heapStatisticsArrayBuffer, heapStatisticsArrayBuffer,
heapSpaceStatisticsArrayBuffer, heapSpaceStatisticsArrayBuffer,
updateHeapStatisticsArrayBuffer, updateHeapStatisticsArrayBuffer,
@ -64,6 +65,12 @@ const heapStatisticsBuffer =
const heapSpaceStatisticsBuffer = const heapSpaceStatisticsBuffer =
new Float64Array(heapSpaceStatisticsArrayBuffer); new Float64Array(heapSpaceStatisticsArrayBuffer);
function setFlagsFromString(flags) {
if (typeof flags !== 'string')
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'flags', 'string');
_setFlagsFromString(flags);
}
function getHeapStatistics() { function getHeapStatistics() {
const buffer = heapStatisticsBuffer; const buffer = heapStatisticsBuffer;

View File

@ -114,13 +114,7 @@ void UpdateHeapSpaceStatisticsBuffer(const FunctionCallbackInfo<Value>& args) {
void SetFlagsFromString(const FunctionCallbackInfo<Value>& args) { void SetFlagsFromString(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args); CHECK(args[0]->IsString());
if (args.Length() < 1)
return env->ThrowTypeError("v8 flag is required");
if (!args[0]->IsString())
return env->ThrowTypeError("v8 flag must be a string");
String::Utf8Value flags(args[0]); String::Utf8Value flags(args[0]);
V8::SetFlagsFromString(*flags, flags.length()); V8::SetFlagsFromString(*flags, flags.length());
} }

View File

@ -1,9 +1,14 @@
'use strict'; 'use strict';
require('../common'); const common = require('../common');
const assert = require('assert');
const v8 = require('v8'); const v8 = require('v8');
assert.throws(function() { v8.setFlagsFromString(1); }, [ 1, undefined ].forEach((i) => {
/^TypeError: v8 flag must be a string$/); common.expectsError(
assert.throws(function() { v8.setFlagsFromString(); }, () => v8.setFlagsFromString(i),
/^TypeError: v8 flag is required$/); {
code: 'ERR_INVALID_ARG_TYPE',
type: TypeError,
message: 'The "flags" argument must be of type string'
}
);
});