13#define DUK__CLASS_BITS 5
14#define DUK__BIDX_BITS 7
15#define DUK__STRIDX_BITS 9
16#define DUK__NATIDX_BITS 8
17#define DUK__NUM_NORMAL_PROPS_BITS 6
18#define DUK__NUM_FUNC_PROPS_BITS 6
19#define DUK__PROP_FLAGS_BITS 3
20#define DUK__STRING_LENGTH_BITS 8
21#define DUK__STRING_CHAR_BITS 7
22#define DUK__LENGTH_PROP_BITS 3
23#define DUK__NARGS_BITS 3
24#define DUK__PROP_TYPE_BITS 3
25#define DUK__MAGIC_BITS 16
27#define DUK__NARGS_VARARGS_MARKER 0x07
28#define DUK__NO_CLASS_MARKER 0x00
29#define DUK__NO_BIDX_MARKER 0x7f
30#define DUK__NO_STRIDX_MARKER 0xff
32#define DUK__PROP_TYPE_DOUBLE 0
33#define DUK__PROP_TYPE_STRING 1
34#define DUK__PROP_TYPE_STRIDX 2
35#define DUK__PROP_TYPE_BUILTIN 3
36#define DUK__PROP_TYPE_UNDEFINED 4
37#define DUK__PROP_TYPE_BOOLEAN_TRUE 5
38#define DUK__PROP_TYPE_BOOLEAN_FALSE 6
39#define DUK__PROP_TYPE_ACCESSOR 7
46#if defined(DUK_USE_ROM_OBJECTS)
47#if defined(DUK_USE_ROM_GLOBAL_CLONE) || defined(DUK_USE_ROM_GLOBAL_INHERIT)
51#if defined(DUK_USE_ROM_GLOBAL_CLONE)
61#if defined(DUK_USE_ROM_GLOBAL_INHERIT)
69#elif defined(DUK_USE_ROM_GLOBAL_CLONE)
109#error internal error in defines
159#if defined(DUK_USE_ROM_GLOBAL_CLONE) || defined(DUK_USE_ROM_GLOBAL_INHERIT)
165 duk__duplicate_ram_global_object(thr);
184 for (i = 0; i < n; i++) {
200 for (i = 0; i < 8; i++) {
220 bd->
data = (
const duk_uint8_t *) duk_builtins_data;
370 DUK_DDD(
DUK_DDDPRINT(
"created built-in %ld, class=%ld, length=%ld", (
long) i, (
long) class_num, (
long) len));
417 DUK_DDD(
DUK_DDDPRINT(
"built-in object %ld, %ld normal valued properties", (
long) i, (
long) num));
418 for (j = 0; j < num; j++) {
438 DUK_DDD(
DUK_DDDPRINT(
"built-in %ld, normal-valued property %ld, key %!T, flags 0x%02lx, type %ld",
439 (
long) i, (
long) j,
duk_get_tval(ctx, -1), (
unsigned long) prop_flags, (
long) t));
483 DUK_DDD(
DUK_DDDPRINT(
"built-in accessor property: objidx=%ld, key=%!T, getteridx=%ld, setteridx=%ld, flags=0x%04lx",
484 (
long) i,
duk_get_tval(ctx, -1), (
long) natidx_getter, (
long) natidx_setter, (
unsigned long) prop_flags));
520 DUK_DDD(
DUK_DDDPRINT(
"built-in object %ld, %ld function valued properties", (
long) i, (
long) num));
521 for (j = 0; j < num; j++) {
529#if defined(DUK_USE_LIGHTFUNC_BUILTINS)
547 DUK_DDD(
DUK_DDDPRINT(
"built-in %ld, function-valued property %ld, key %!O, natidx %ld, length %ld, nargs %ld",
548 (
long) i, (
long) j, (
duk_heaphdr *) h_key, (
long) natidx, (
long) c_length,
549 (c_nargs ==
DUK_VARARGS ? (
long) -1 : (long) c_nargs)));
554#if defined(DUK_USE_LIGHTFUNC_BUILTINS)
569 lightfunc_eligible = 0;
572 if (lightfunc_eligible) {
578 DUK_D(
DUK_DPRINT(
"built-in function eligible as light function: i=%d, j=%d c_length=%ld, c_nargs=%ld, magic=%ld -> %!iT", (
int) i, (
int) j, (
long) c_length, (
long) c_nargs, (
long) magic,
duk_get_tval(ctx, -1)));
582 DUK_D(
DUK_DPRINT(
"built-in function NOT ELIGIBLE as light function: i=%d, j=%d c_length=%ld, c_nargs=%ld, magic=%ld", (
int) i, (
int) j, (
long) c_length, (
long) c_nargs, (
long) magic));
607 h_func->
magic = magic;
629#if defined(DUK_USE_LIGHTFUNC_BUILTINS)
663#if !defined(DUK_USE_ES6_OBJECT_PROTO_PROPERTY)
664 DUK_DD(
DUK_DDPRINT(
"delete Object.prototype.__proto__ built-in which is not enabled in features"));
668#if !defined(DUK_USE_ES6_OBJECT_SETPROTOTYPEOF)
669 DUK_DD(
DUK_DDPRINT(
"delete Object.setPrototypeOf built-in which is not enabled in features"));
676#
if defined(DUK_USE_INTEGER_LE)
678#elif defined(DUK_USE_INTEGER_BE)
680#elif defined(DUK_USE_INTEGER_ME)
685#
if defined(DUK_USE_DOUBLE_LE)
687#elif defined(DUK_USE_DOUBLE_BE)
689#elif defined(DUK_USE_DOUBLE_ME)
696#
if defined(DUK_USE_PACKED_TVAL)
701#
if defined(DUK_USE_FASTINT)
706#
if defined(DUK_USE_STRTAB_CHAIN)
713#
if !defined(DUK_USE_HEAPPTR16) && !defined(DUK_DATAPTR16) && !defined(DUK_FUNCPTR16)
716#
if defined(DUK_USE_HEAPPTR16)
719#
if defined(DUK_USE_DATAPTR16)
722#
if defined(DUK_USE_FUNCPTR16)
725#
if defined(DUK_USE_REFCOUNT16)
728#
if defined(DUK_USE_STRHASH16)
731#
if defined(DUK_USE_STRLEN16)
734#
if defined(DUK_USE_BUFLEN16)
737#
if defined(DUK_USE_OBJSIZES16)
740#
if defined(DUK_USE_LIGHTFUNC_BUILTINS)
743#
if defined(DUK_USE_ROM_STRINGS) || defined(DUK_USE_ROM_OBJECTS)
752#
if defined(DUK_USE_HOBJECT_LAYOUT_1)
756#elif defined(DUK_USE_HOBJECT_LAYOUT_3)
787#ifdef DUK_USE_BUILTIN_INITJS
794#ifdef DUK_USE_USER_INITJS
811#ifdef DUK_USE_DDPRINT
813 DUK_DD(
DUK_DDPRINT(
"built-in object %ld after initialization and compacting: %!@iO",
#define DUK_UNREACHABLE()
unsigned int duk_small_uint_t
#define DUK_LOSE_CONST(src)
#define DUK_USE_ARCH_STRING
#define DUK_USE_OS_STRING
#define DUK_USE_HOBJECT_LAYOUT_2
#define DUK_USE_COMPILER_STRING
duk_int_fast32_t duk_int_t
#define DUK_MEMZERO(p, n)
#define DUK_USE_STRTAB_PROBE
DUK_INTERNAL_DECL void duk_push_c_function_noexotic(duk_context *ctx, duk_c_function func, duk_int_t nargs)
DUK_INTERNAL_DECL duk_small_int_t duk_bd_decode_flag(duk_bitdecoder_ctx *ctx)
#define DUK_STRIDX_INT_THIS
DUK_EXTERNAL void duk_pop_2(duk_context *ctx)
DUK_EXTERNAL const char * duk_push_string(duk_context *ctx, const char *str)
DUK_INTERNAL_DECL duk_hobject * duk_require_hobject(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_HAS_BOUND(h)
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_ALLOC(heap, size)
DUK_INTERNAL const duk_uint8_t duk_initjs_data[204]
#define DUK_STRIDX_TO_UTC_STRING
#define DUK_LFUNC_NARGS_MAX
#define DUK_DELPROP_FLAG_THROW
#define DUK_HOBJECT_GET_ENEXT(h)
#define DUK_HOBJECT_SET_EXOTIC_STRINGOBJ(h)
#define DUK_HOBJECT_GET_PROPS(heap, h)
#define DUK_HEAP_NUM_STRINGS
#define DUK_BIDX_OBJECT_PROTOTYPE
DUK_INTERNAL_DECL void duk_xdef_prop_stridx_builtin(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx, duk_small_int_t builtin_idx, duk_small_uint_t desc_flags)
#define DUK_BIDX_DOUBLE_ERROR
DUK_INTERNAL_DECL void duk_push_c_function_noconstruct_noexotic(duk_context *ctx, duk_c_function func, duk_int_t nargs)
#define DUK_LFUNC_LENGTH_MAX
#define DUK_STRIDX_TO_GMT_STRING
#define DUK_HOBJECT_HAS_CREATEARGS(h)
#define DUK_BIDX_FUNCTION_PROTOTYPE
#define DUK_PROPDESC_FLAGS_NONE
DUK_INTERNAL_DECL void duk_push_hstring_stridx(duk_context *ctx, duk_small_int_t stridx)
#define DUK_HTHREAD_STRING___PROTO__(thr)
#define DUK_HOBJECT_CLASS_FUNCTION
DUK_EXTERNAL void duk_require_stack(duk_context *ctx, duk_idx_t extra)
#define DUK_HOBJECT_SET_PROPS(heap, h, x)
DUK_INTERNAL_DECL void duk_hobject_define_accessor_internal(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_hobject *getter, duk_hobject *setter, duk_small_uint_t propflags)
#define DUK_HOBJECT_CLASS_ARRAY
#define DUK_STRIDX_CONSTRUCTOR
#define DUK_PROPDESC_FLAG_ACCESSOR
#define DUK_HOBJECT_HAS_CONSTRUCTABLE(h)
#define DUK_HTHREAD_STRING_YIELD(thr)
#define DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, h, p)
#define DUK_HOBJECT_GET_ASIZE(h)
DUK_INTERNAL_DECL void duk_hobject_compact_props(duk_hthread *thr, duk_hobject *obj)
#define DUK_HOBJECT_SET_EXOTIC_ARRAY(h)
#define DUK_ASSERT_DISABLE(x)
DUK_EXTERNAL void duk_push_int(duk_context *ctx, duk_int_t val)
DUK_EXTERNAL void duk_pop_3(duk_context *ctx)
#define DUK_HOBJECT_CLASS_AS_FLAGS(v)
#define DUK_HOBJECT_SET_ESIZE(h, v)
#define DUK_ERROR_ALLOC_DEFMSG(thr)
#define DUK_LFUNC_MAGIC_MIN
DUK_INTERNAL const duk_c_function duk_bi_native_functions[149]
#define DUK_BIDX_GLOBAL_ENV
#define DUK_HOBJECT_SET_STRICT(h)
#define DUK_LFUNC_NARGS_VARARGS
DUK_INTERNAL_DECL duk_int32_t duk_bd_decode_flagged(duk_bitdecoder_ctx *ctx, duk_small_int_t bits, duk_int32_t def_value)
#define DUK_HTHREAD_STRING_RESUME(thr)
#define DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(h)
DUK_INTERNAL_DECL duk_bool_t duk_hobject_delprop_raw(duk_hthread *thr, duk_hobject *obj, duk_hstring *key, duk_small_uint_t flags)
#define DUK_HOBJECT_HAS_ARRAY_PART(h)
#define DUK_HOBJECT_CLASS_OBJENV
#define DUK_LFUNC_FLAGS_PACK(magic, length, nargs)
#define DUK_HOBJECT_GET_HSIZE(h)
DUK_EXTERNAL void duk_set_top(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_CLASS_GLOBAL
#define DUK_STRIDX_LENGTH
DUK_EXTERNAL void duk_dup(duk_context *ctx, duk_idx_t from_index)
#define DUK_HTHREAD_STRING_EVAL(thr)
DUK_INTERNAL_DECL void duk_push_tval(duk_context *ctx, duk_tval *tv)
#define DUK_HOBJECT_HAS_NATIVEFUNCTION(h)
#define DUK_HOBJECT_HAS_THREAD(h)
#define DUK_HOBJECT_SET_ENEXT(h, v)
DUK_EXTERNAL void duk_push_undefined(duk_context *ctx)
#define DUK_STRIDX_INT_TARGET
#define DUK_HTHREAD_STRING_REQUIRE(thr)
#define DUK_PROPDESC_FLAGS_WC
#define DUK_PROPDESC_FLAG_WRITABLE
DUK_EXTERNAL void duk_push_number(duk_context *ctx, duk_double_t val)
#define DUK_ASSERT_TOP(ctx, n)
DUK_EXTERNAL void duk_push_false(duk_context *ctx)
#define DUK_HOBJECT_FLAG_EXTENSIBLE
DUK_INTERNAL_DECL duk_idx_t duk_push_object_helper(duk_context *ctx, duk_uint_t hobject_flags_and_class, duk_small_int_t prototype_bidx)
#define DUK_HOBJECT_SET_ASIZE(h, v)
#define DUK_BIDX_OBJECT_CONSTRUCTOR
#define DUK_HOBJECT_HAS_NEWENV(h)
#define DUK_LFUNC_NARGS_MIN
DUK_EXTERNAL const char * duk_to_string(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_INCREF(thr, h)
DUK_EXTERNAL void duk_pop(duk_context *ctx)
#define DUK_TVAL_SET_LIGHTFUNC(tv, fp, flags)
DUK_INTERNAL_DECL duk_hobject * duk_get_hobject(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_SET_HSIZE(h, v)
#define DUK_HOBJECT_HAS_ENVRECCLOSED(h)
#define DUK_HOBJECT_CLEAR_CONSTRUCTABLE(h)
#define DUK_LFUNC_MAGIC_MAX
#define DUK_STRIDX_PROTOTYPE
DUK_INTERNAL_DECL void duk_xdef_prop_stridx(duk_context *ctx, duk_idx_t obj_index, duk_small_int_t stridx, duk_small_uint_t desc_flags)
#define DUK_HOBJECT_CLEAR_EXTENSIBLE(h)
DUK_INTERNAL_DECL duk_hstring * duk_get_hstring(duk_context *ctx, duk_idx_t index)
#define DUK_HEAPHDR_NEEDS_REFCOUNT_UPDATE(h)
#define DUK_HOBJECT_GET_ESIZE(h)
DUK_INTERNAL_DECL duk_hnativefunction * duk_require_hnativefunction(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_HAS_EXTENSIBLE(h)
#define DUK_HOBJECT_CLASS_STRING
#define DUK_HOBJECT_HAS_STRICT(h)
#define DUK_HOBJECT_P_ALLOC_SIZE(h)
DUK_INTERNAL_DECL duk_int32_t duk_bd_decode(duk_bitdecoder_ctx *ctx, duk_small_int_t bits)
#define DUK_HOBJECT_SET_CLASS_NUMBER(h, v)
#define DUK_BIDX_DATE_PROTOTYPE
#define DUK_HOBJECT_INCREF_ALLOWNULL(thr, h)
#define DUK_PROPDESC_FLAGS_W
#define DUK_HOBJECT_HAS_COMPILEDFUNCTION(h)
#define DUK_HTHREAD_STRING_SET_PROTOTYPE_OF(thr)
DUK_INTERNAL_DECL duk_tval * duk_get_tval(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_HAS_NAMEBINDING(h)
DUK_INTERNAL_DECL void duk_xdef_prop(duk_context *ctx, duk_idx_t obj_index, duk_small_uint_t desc_flags)
#define DUK_NUM_ALL_BUILTINS
#define duk_push_fixed_buffer(ctx, size)
#define duk_eval_string(ctx, src)
duk_ret_t(* duk_c_function)(duk_context *ctx)
#define duk_eval_string_noresult(ctx, src)
#define DUK__NARGS_VARARGS_MARKER
#define DUK__PROP_FLAGS_BITS
#define DUK__NUM_FUNC_PROPS_BITS
#define DUK__LENGTH_PROP_BITS
DUK_INTERNAL void duk_hthread_create_builtin_objects(duk_hthread *thr)
#define DUK__PROP_TYPE_ACCESSOR
#define DUK__PROP_TYPE_BUILTIN
DUK_LOCAL void duk__push_stridx(duk_context *ctx, duk_bitdecoder_ctx *bd)
#define DUK__NO_BIDX_MARKER
DUK_LOCAL void duk__push_string(duk_context *ctx, duk_bitdecoder_ctx *bd)
#define DUK__STRING_CHAR_BITS
DUK_LOCAL void duk__push_stridx_or_string(duk_context *ctx, duk_bitdecoder_ctx *bd)
#define DUK__PROP_TYPE_BITS
DUK_LOCAL void duk__push_double(duk_context *ctx, duk_bitdecoder_ctx *bd)
#define DUK__PROP_TYPE_STRIDX
#define DUK__PROP_TYPE_STRING
#define DUK__PROP_TYPE_DOUBLE
#define DUK__NUM_NORMAL_PROPS_BITS
#define DUK__PROP_TYPE_BOOLEAN_FALSE
#define DUK__PROP_TYPE_BOOLEAN_TRUE
#define DUK__STRING_LENGTH_BITS
#define DUK__PROP_TYPE_UNDEFINED
DUK_INTERNAL void duk_hthread_copy_builtin_objects(duk_hthread *thr_from, duk_hthread *thr_to)
static void error(LoadState *S, const char *why)
duk_hobject * builtins[DUK_NUM_BUILTINS]