njs_json_stringify_indent(stringify, &chain, 0);
}
- stringify->retval = njs_array_start(&state->value)[state->index++];
+ if (njs_is_fast_array(&state->value)) {
+ value = njs_array_start(&state->value);
+ stringify->retval = value[state->index++];
+
+ } else {
+ ret = njs_value_property_i64(vm, &state->value, state->index++,
+ &stringify->retval);
+ if (njs_slow_path(ret == NJS_ERROR)) {
+ return ret;
+ }
+ }
+
value = &stringify->retval;
ret = njs_json_stringify_to_json(stringify, state, NULL, value);
{ njs_str("var a = {}; a.a = a; JSON.stringify(a)"),
njs_str("TypeError: Nested too deep or a cyclic structure") },
+ { njs_str("var array = [1,2,3];"
+ "array[1] = {get value() {"
+ " Object.defineProperty(array, '2', {get: () => 10}) }"
+ "};"
+ "JSON.stringify(array)"),
+ njs_str("[1,{},10]") },
+
/* njs.dump(). */
{ njs_str("njs.dump({a:1, b:[1,,2,{c:new Boolean(1)}]})"),