25#define DUK__ENUM_START_INDEX 2
76 (
void *) keys, (
void *) p_end));
78#ifdef DUK_USE_DDDPRINT
91 for (p_curr = keys + 1; p_curr < p_end; p_curr++) {
95 if (val_curr >= val_highest) {
97 "already in correct order, next",
98 (
void *) p_curr, (
void *) p_end, (
long) val_highest, (
long) val_curr));
99 val_highest = val_curr;
104 "needs to be inserted",
105 (
void *) p_curr, (
void *) p_end, (
long) val_highest, (
long) val_curr));
111 p_insert = p_curr - 1;
114 if (val_insert < val_curr) {
116 (
void *) p_insert, (
long) val_insert, (
long) val_curr));
120 if (p_insert == keys) {
121 DUK_DDD(
DUK_DDDPRINT(
"p_insert=%p -> out of keys, insert to beginning", (
void *) p_insert));
125 (
void *) p_insert, (
long) val_insert, (
long) val_curr));
138 (
void *) (p_insert + 1), (
void *) p_insert,
139 (
long) (p_curr - p_insert), (
void *) h_curr));
142 (
const void *) p_insert,
143 (
size_t) ((p_curr - p_insert) *
sizeof(
duk_hstring *)));
148#ifdef DUK_USE_DDDPRINT
175#if defined(DUK_USE_ES6_PROXY)
212#if defined(DUK_USE_ES6_PROXY)
219 &h_proxy_handler))) {
233 enum_target = h_proxy_target;
251 for (i = 0; i < len; i++) {
282 goto compact_and_return;
311 if (h_bufobj ==
NULL) {
324 for (i = 0; i < len; i++) {
354 for (i = 0; i < n; i++) {
471#if defined(DUK_USE_ES6_PROXY)
516#if defined(DUK_USE_ES6_PROXY)
unsigned int duk_small_uint_t
duk_small_int_t duk_ret_t
duk_small_int_t duk_bool_t
duk_uint32_t duk_uint_fast32_t
#define DUK_HOBJECT_A_GET_VALUE_PTR(heap, h, i)
#define DUK_STRIDX_BYTE_OFFSET
DUK_EXTERNAL void duk_pop_2(duk_context *ctx)
DUK_INTERNAL_DECL duk_bool_t duk_put_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx)
#define DUK_HOBJECT_GET_PROTOTYPE(heap, h)
DUK_INTERNAL_DECL duk_hobject * duk_require_hobject(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL_DECL duk_bool_t duk_get_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx)
DUK_EXTERNAL void duk_push_true(duk_context *ctx)
#define DUK_STRIDX_ENUMERATE
#define DUK_HOBJECT_HAS_EXOTIC_DUKFUNC(h)
#define DUK_HSTRING_NO_ARRAY_INDEX
#define DUK_HOBJECT_E_SLOT_IS_ENUMERABLE(heap, h, i)
#define DUK_HOBJECT_GET_ENEXT(h)
#define DUK_STRIDX_BYTES_PER_ELEMENT
DUK_INTERNAL_DECL duk_hstring * duk_hobject_get_internal_value_string(duk_heap *heap, duk_hobject *obj)
#define DUK_HOBJECT_E_GET_KEY_BASE(heap, h)
DUK_EXTERNAL duk_bool_t duk_put_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx)
#define DUK_STRIDX_INT_NEXT
#define DUK_STRIDX_BYTE_LENGTH
#define DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(h)
DUK_EXTERNAL duk_size_t duk_get_length(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL_DECL void duk_push_hstring_stridx(duk_context *ctx, duk_small_int_t stridx)
#define DUK_HSTRING_GET_CHARLEN(x)
#define DUK_HOBJECT_E_GET_KEY(heap, h, i)
DUK_EXTERNAL void duk_remove(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_GET_ASIZE(h)
DUK_INTERNAL_DECL void duk_hobject_compact_props(duk_hthread *thr, duk_hobject *obj)
#define DUK_TVAL_IS_UNUSED(tv)
DUK_EXTERNAL void duk_push_int(duk_context *ctx, duk_int_t val)
#define DUK_HOBJECT_IS_BUFFEROBJECT(h)
#define DUK_STRIDX_LENGTH
DUK_EXTERNAL void duk_dup(duk_context *ctx, duk_idx_t from_index)
DUK_EXTERNAL void duk_insert(duk_context *ctx, duk_idx_t to_index)
DUK_INTERNAL_DECL duk_bool_t duk_hobject_hasprop_raw(duk_hthread *thr, duk_hobject *obj, duk_hstring *key)
DUK_EXTERNAL duk_idx_t duk_get_top(duk_context *ctx)
#define DUK_HOBJECT_E_SLOT_IS_ACCESSOR(heap, h, i)
DUK_INTERNAL_DECL duk_hstring * duk_heap_string_intern_u32_checked(duk_hthread *thr, duk_uint32_t val)
DUK_EXTERNAL duk_bool_t duk_get_prop_index(duk_context *ctx, duk_idx_t obj_index, duk_uarridx_t arr_index)
#define DUK_HOBJECT_E_GET_KEY_PTR(heap, h, i)
#define DUK_HOBJECT_E_GET_VALUE_PTR(heap, h, i)
#define DUK_STRIDX_INT_TARGET
#define DUK_HSTRING_HAS_INTERNAL(x)
DUK_EXTERNAL void duk_call_method(duk_context *ctx, duk_idx_t nargs)
DUK_EXTERNAL duk_bool_t duk_get_prop(duk_context *ctx, duk_idx_t obj_index)
#define DUK_HOBJECT_HAS_EXOTIC_PROXYOBJ(h)
DUK_INTERNAL_DECL duk_idx_t duk_push_object_internal(duk_context *ctx)
DUK_EXTERNAL void duk_pop(duk_context *ctx)
#define DUK_HOBJECT_E_GET_VALUE(heap, h, i)
DUK_INTERNAL_DECL duk_hobject * duk_get_hobject(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL_DECL void duk_push_hobject(duk_context *ctx, duk_hobject *h)
DUK_EXTERNAL duk_idx_t duk_push_array(duk_context *ctx)
DUK_INTERNAL_DECL void duk_push_hstring(duk_context *ctx, duk_hstring *h)
DUK_EXTERNAL duk_bool_t duk_is_string(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL duk_uint_t duk_require_uint(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL_DECL duk_bool_t duk_hobject_proxy_check(duk_hthread *thr, duk_hobject *obj, duk_hobject **out_target, duk_hobject **out_handler)
#define DUK_HSTRING_GET_ARRIDX_SLOW(h)
#define duk_push_u32(ctx, val)
DUK_EXTERNAL duk_bool_t duk_put_prop(duk_context *ctx, duk_idx_t obj_idx)
DUK_INTERNAL_DECL duk_tval * duk_get_tval(duk_context *ctx, duk_idx_t index)
#define DUK_ENUM_ARRAY_INDICES_ONLY
#define DUK_ENUM_SORT_ARRAY_INDICES
#define DUK_ENUM_NO_PROXY_BEHAVIOR
#define DUK_ENUM_OWN_PROPERTIES_ONLY
#define DUK_ENUM_INCLUDE_INTERNAL
#define DUK_ENUM_INCLUDE_NONENUMERABLE
DUK_LOCAL void duk__sort_array_indices(duk_hthread *thr, duk_hobject *h_obj)
DUK_INTERNAL void duk_hobject_enumerator_create(duk_context *ctx, duk_small_uint_t enum_flags)
#define DUK__ENUM_START_INDEX
DUK_INTERNAL duk_ret_t duk_hobject_get_enumerated_keys(duk_context *ctx, duk_small_uint_t enum_flags)
DUK_LOCAL const duk_uint16_t duk__bufferobject_virtual_props[]
DUK_INTERNAL duk_bool_t duk_hobject_enumerator_next(duk_context *ctx, duk_bool_t get_value)