util: simplify inspection limit handling

This simplifies the handling of objects that exceed 128mb. Instead
of using a separate property to identify that all following inputs
should only return their constructor name it'll just set the depth
to -1. That has the almost the same behavior as before while providing
a better output in some cases. The performance should be almost
identical as well.

PR-URL: https://github.com/nodejs/node/pull/27733
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
This commit is contained in:
Ruben Bridgewater 2019-05-16 13:09:31 +02:00
parent f1a3968a01
commit 79e55f0774
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762

View File

@ -520,17 +520,12 @@ function formatValue(ctx, value, recurseTimes, typedArray) {
// any proxy handlers.
const proxy = getProxyDetails(value);
if (proxy !== undefined) {
if (ctx.showProxy && ctx.stop === undefined) {
if (ctx.showProxy) {
return formatProxy(ctx, proxy, recurseTimes);
}
value = proxy[0];
}
if (ctx.stop !== undefined) {
const name = getConstructorName(value, ctx) || value[Symbol.toStringTag];
return ctx.stylize(`[${name || 'Object'}]`, 'special');
}
// Provide a hook for user-specified inspect functions.
// Check that value is an object with an inspect function on it.
if (ctx.customInspect) {
@ -788,7 +783,7 @@ function formatRaw(ctx, value, recurseTimes, typedArray) {
// This limit also makes sure that huge objects don't block the event loop
// significantly.
if (newLength > 2 ** 27) {
ctx.stop = true;
ctx.depth = -1;
}
return res;
}