Summary
Under PERRY_JSON_TAPE=1, console.log() of a lazy-tape top-level string array (parsed without a reviver, not yet indexed) prints [object Object] instead of the array contents.
Repro
const arr = JSON.parse('["a","bb","ccc","dddd","eeeee"]');
console.log(arr);
PERRY_JSON_TAPE=1:
[object Object] // Perry
[ 'a', 'bb', 'ccc', 'dddd', 'eeeee' ] // Node
Default (tape off) is correct. Surfaced by test_json_sso_strings line ~32 under PERRY_JSON_TAPE=1.
Notes
Separate from #1424 (that was the reviver SIGSEGV, fixed in PR #1447). This is the inspect/format path for a lazy array: console.log's formatter doesn't recognize an un-materialized LazyArrayHeader as an array (the stringify path has redirect_lazy_to_materialized for this; the console.dir/inspect formatter likely needs the same redirect). arr.length / indexed reads work — only the whole-array console.log formatting is wrong.
Summary
Under
PERRY_JSON_TAPE=1,console.log()of a lazy-tape top-level string array (parsed without a reviver, not yet indexed) prints[object Object]instead of the array contents.Repro
PERRY_JSON_TAPE=1:Default (tape off) is correct. Surfaced by
test_json_sso_stringsline ~32 underPERRY_JSON_TAPE=1.Notes
Separate from #1424 (that was the reviver SIGSEGV, fixed in PR #1447). This is the inspect/format path for a lazy array:
console.log's formatter doesn't recognize an un-materializedLazyArrayHeaderas an array (the stringify path hasredirect_lazy_to_materializedfor this; the console.dir/inspect formatter likely needs the same redirect).arr.length/ indexed reads work — only the whole-arrayconsole.logformatting is wrong.