}
entry = NULL;
- njs_set_object(&value, (njs_object_t *) object);
+ njs_set_type_object(&value, (njs_object_t *) object, object->type);
for (i = 0; i< items_sorted->length; i++) {
ret = njs_value_property_val(vm, &value, &items_sorted->start[i],
return NJS_OK;
}
- if (njs_slow_path(!(njs_is_object(value)
- && njs_object(value)->fast_array)))
- {
+ if (njs_slow_path(!njs_is_fast_array(value))) {
goto slow_path;
}
return NJS_OK;
}
- if (njs_slow_path(!(njs_is_object(value)
- && njs_object(value)->fast_array)))
- {
+ if (njs_slow_path(!njs_is_fast_array(value))) {
goto slow_path;
}
" try {a.set(init,Infinity)} catch (e) {return e.name == 'RangeError'};})"),
njs_str("true") },
+ { njs_str("var a = new Uint8Array([1]);"
+ "Object.defineProperty(a, 'x', {enumerable: true,"
+ " get() { return this === a && this[0]; }});"
+ "Object.values(a)"),
+ njs_str("1,1") },
+
+ { njs_str("var a = new Uint8Array([1]);"
+ "Object.defineProperty(a, 'x', {enumerable: true,"
+ " get() { this[0] = 2; return this[0]; }});"
+ "Object.values(a); a[0]"),
+ njs_str("2") },
+
+ { njs_str("var a = Buffer.from([1]);"
+ "Object.defineProperty(a, 'x', {enumerable: true,"
+ " get() { return this === a && this[0]; }});"
+ "Object.values(a)"),
+ njs_str("1,1") },
+
{ njs_str(NJS_INT_TYPED_ARRAY_LIST
".map(v=>{try { var a = new v(1); $262.detachArrayBuffer(a.buffer); Object.entries(a)} "
"catch (e) {return e.name}}).every(v=>v === 'TypeError')"),