15#if defined(DUK_USE_BYTECODE_DUMP_SUPPORT)
17#define DUK__SER_MARKER 0xff
18#define DUK__SER_VERSION 0x00
19#define DUK__SER_STRING 0x00
20#define DUK__SER_NUMBER 0x01
21#define DUK__BYTECODE_INITIAL_ALLOC 256
43 DUK_MEMCPY((
void *) buf, (
const void *) p, (
size_t) len);
56 tmp32 = (duk_uint32_t) len;
75 tmp32 = (duk_uint32_t) len;
162#if defined(DUK_USE_FASTINT)
164 DUK_ASSERT(DUK_TVAL_GET_FASTINT(tv_val) == (duk_int64_t) DUK_TVAL_GET_FASTINT_U32(tv_val));
165 val = DUK_TVAL_GET_FASTINT_U32(tv_val);
226 duk_uint32_t count_instr;
236 "consts=[%p,%p[ (%ld bytes, %ld items), "
237 "funcs=[%p,%p[ (%ld bytes, %ld items), "
238 "code=[%p,%p[ (%ld bytes, %ld items)",
269#if defined(DUK_USE_DEBUGGER_SUPPORT)
270 tmp32 = func->start_line;
272 tmp32 = func->end_line;
287#if defined(DUK_USE_INTEGER_BE)
288 DUK_MEMCPY((
void *) p, (
const void *) ins, (
size_t) (ins_end - ins));
289 p += (size_t) (ins_end - ins);
291 while (ins != ins_end) {
292 tmp32 = (duk_uint32_t) (*ins);
301 while (tv != tv_end) {
326 while (fn != fn_end) {
352 DUK_DD(
DUK_DDPRINT(
"serialized function %p -> final pointer %p", (
void *) func, (
void *) p));
367#define DUK__ASSERT_LEFT(n) do { \
368 DUK_ASSERT((duk_size_t) (p_end - p) >= (duk_size_t) (n)); \
376 duk_uint32_t count_instr, count_const, count_funcs;
380 duk_uint8_t *fun_data;
394 DUK_DD(
DUK_DDPRINT(
"loading function, p=%p, p_end=%p", (
void *) p, (
void *) p_end));
401 data_size =
sizeof(
duk_tval) * count_const +
406 (
long) count_instr, (
long) count_const,
407 (
long) count_const, (
long) data_size));
429#if defined(DUK_USE_DEBUGGER_SUPPORT)
460#if defined(DUK_USE_INTEGER_BE)
468 for (n = count_instr; n > 0; n--) {
475 for (n = count_const; n > 0; n--) {
478 switch (const_type) {
502 for (n = count_funcs; n > 0; n--) {
525 DUK_ASSERT((count_const == 0 && count_funcs == 0) || tv1 !=
NULL);
528 if (count_const > 0) {
531 for (n = count_const; n > 0; n--) {
539 for (n = count_funcs; n > 0; n--) {
616 for (arr_idx = 0; ; arr_idx++) {
673 duk_uint8_t *p_buf, *p, *p_end;
711#undef DUK__SER_MARKER
712#undef DUK__SER_VERSION
713#undef DUK__SER_STRING
714#undef DUK__SER_NUMBER
715#undef DUK__BYTECODE_INITIAL_ALLOC
unsigned int duk_small_uint_t
#define DUK_USE_ESBC_MAX_BYTES
duk_uint32_t duk_uint_fast32_t
#define DUK_HEAPHDR_FLAGS_FLAG_MASK
#define DUK_HCOMPILEDFUNCTION_SET_FUNCS(heap, h, v)
#define DUK_HOBJECT_A_GET_VALUE_PTR(heap, h, i)
#define DUK_HOBJECT_HAS_EXOTIC_ARRAY(h)
#define DUK_HCOMPILEDFUNCTION_GET_CONSTS_BASE(heap, h)
#define DUK_HSTRING_GET_DATA(x)
DUK_INTERNAL_DECL duk_idx_t duk_push_object_helper_proto(duk_context *ctx, duk_uint_t hobject_flags_and_class, duk_hobject *proto)
#define DUK_HCOMPILEDFUNCTION_GET_CODE_BASE(heap, h)
#define DUK_HEAPHDR_GET_TYPE(h)
#define DUK_BW_SET_PTR(thr, bw_ctx, ptr)
#define DUK_TVAL_IS_NUMBER(tv)
#define DUK_HCOMPILEDFUNCTION_SET_BYTECODE(heap, h, v)
#define DUK_ERROR_TYPE(thr, msg)
#define DUK_HOBJECT_HAS_BOUND(h)
#define DUK_HBUFFER_INCREF(thr, h)
#define DUK_RAW_WRITE_U16_BE(ptr, val)
#define DUK_STRIDX_INT_FORMALS
#define DUK_TVAL_INCREF_FAST(thr, tv)
#define DUK_HOBJECT_GET_ENEXT(h)
#define DUK_TVAL_GET_OBJECT(tv)
DUK_EXTERNAL void duk_compact(duk_context *ctx, duk_idx_t obj_index)
#define DUK_STR_DECODE_FAILED
DUK_EXTERNAL duk_bool_t duk_put_prop_index(duk_context *ctx, duk_idx_t obj_idx, duk_uarridx_t arr_idx)
#define DUK_HOBJECT_E_GET_VALUE_TVAL_PTR(heap, h, i)
#define DUK_HBUFFER_MAX_BYTELEN
#define DUK_HCOMPILEDFUNCTION_GET_FUNCS_COUNT(heap, h)
#define DUK_TVAL_IS_BUFFER(tv)
#define DUK_BW_COMPACT(thr, bw_ctx)
#define DUK_HCOMPILEDFUNCTION_GET_CODE_END(heap, h)
#define DUK_HOBJECT_HAS_EXOTIC_STRINGOBJ(h)
#define DUK_STRIDX_FILE_NAME
#define DUK_HOBJECT_IS_COMPILEDFUNCTION(h)
#define DUK_TVAL_IS_OBJECT(tv)
DUK_EXTERNAL duk_size_t duk_get_length(duk_context *ctx, duk_idx_t index)
#define DUK_BIDX_FUNCTION_PROTOTYPE
#define DUK_PROPDESC_FLAGS_NONE
#define DUK_TVAL_GET_BUFFER(tv)
DUK_EXTERNAL void duk_require_stack(duk_context *ctx, duk_idx_t extra)
#define DUK_STRIDX_CONSTRUCTOR
#define DUK_HCOMPILEDFUNCTION_GET_FUNCS_BASE(heap, h)
#define DUK_HCOMPILEDFUNCTION_SET_DATA(heap, h, v)
#define DUK_HOBJECT_E_GET_KEY(heap, h, i)
DUK_EXTERNAL const char * duk_push_lstring(duk_context *ctx, const char *str, duk_size_t len)
DUK_EXTERNAL void duk_remove(duk_context *ctx, duk_idx_t index)
DUK_INTERNAL_DECL duk_hcompiledfunction * duk_require_hcompiledfunction(duk_context *ctx, duk_idx_t index)
#define DUK_HOBJECT_SET_PROTOTYPE_UPDREF(thr, h, p)
#define DUK_HOBJECT_GET_ASIZE(h)
#define DUK_HCOMPILEDFUNCTION_GET_CODE_COUNT(heap, h)
#define DUK_BW_ENSURE_RAW(thr, bw_ctx, sz, ptr)
#define DUK_HOBJECT_CLASS_AS_FLAGS(v)
#define DUK_BIDX_GLOBAL_ENV
#define DUK_HTHREAD_STRING_INT_VARMAP(thr)
#define DUK_TVAL_GET_STRING(tv)
DUK_INTERNAL_DECL duk_tval * duk_hobject_find_existing_entry_tval_ptr(duk_heap *heap, duk_hobject *obj, duk_hstring *key)
#define DUK_HOBJECT_HAS_EXOTIC_ARGUMENTS(h)
#define DUK_TVAL_SET_NUMBER_CHKFAST(tv, d)
#define DUK_TVAL_IS_STRING(tv)
#define DUK_STRIDX_INT_LEXENV
#define DUK_HCOMPILEDFUNCTION_GET_FUNCS_END(heap, h)
#define DUK_RAW_READ_U8(ptr)
DUK_EXTERNAL void * duk_require_buffer(duk_context *ctx, duk_idx_t index, duk_size_t *out_size)
#define DUK_HSTRING_GET_BYTELEN(x)
DUK_EXTERNAL void duk_set_top(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL duk_idx_t duk_push_object(duk_context *ctx)
#define DUK_STRIDX_INT_VARMAP
#define DUK_STRIDX_LENGTH
DUK_EXTERNAL void duk_dup(duk_context *ctx, duk_idx_t from_index)
DUK_INTERNAL_DECL duk_hbuffer * duk_get_hbuffer(duk_context *ctx, duk_idx_t index)
DUK_EXTERNAL duk_idx_t duk_get_top(duk_context *ctx)
#define DUK_HOBJECT_E_SLOT_IS_ACCESSOR(heap, h, i)
#define DUK_HCOMPILEDFUNCTION_GET_CONSTS_COUNT(heap, h)
#define DUK_HEAPHDR_SET_FLAGS(h, val)
#define DUK_HSTRING_MAX_BYTELEN
DUK_INTERNAL_DECL void duk_push_tval(duk_context *ctx, duk_tval *tv)
#define DUK_HOBJECT_HAS_NATIVEFUNCTION(h)
#define DUK_RAW_WRITE_DOUBLE_BE(ptr, val)
#define DUK_HOBJECT_CLASS_DECENV
#define DUK_HOBJECT_HAS_THREAD(h)
#define DUK_HCOMPILEDFUNCTION_GET_FUNCS(heap, h)
#define DUK_BW_INIT_PUSHBUF(thr, bw_ctx, sz)
struct duk_tval_struct duk_tval
#define DUK_BW_GET_PTR(thr, bw_ctx)
DUK_INTERNAL_DECL duk_hcompiledfunction * duk_get_hcompiledfunction(duk_context *ctx, duk_idx_t index)
#define DUK_PROPDESC_FLAGS_WC
#define DUK_HTHREAD_GET_STRING(thr, idx)
#define DUK_ASSERT_TOP(ctx, n)
#define DUK_HTHREAD_STRING_INT_FORMALS(thr)
#define DUK_HCOMPILEDFUNCTION_GET_FUNCS_SIZE(heap, h)
#define DUK_HOBJECT_FLAG_EXTENSIBLE
DUK_INTERNAL_DECL duk_idx_t duk_push_compiledfunction(duk_context *ctx)
#define DUK_RAW_READ_DOUBLE_BE(ptr)
#define DUK_STRIDX_INT_PC2LINE
#define DUK_HCOMPILEDFUNCTION_GET_DATA(heap, h)
#define DUK_HBUFFER_GET_DATA_PTR(heap, x)
#define DUK_HOBJECT_INCREF(thr, h)
DUK_EXTERNAL void duk_pop(duk_context *ctx)
#define DUK_HTHREAD_STRING_EMPTY_STRING(thr)
DUK_EXTERNAL duk_idx_t duk_push_array(duk_context *ctx)
#define DUK_TVAL_GET_NUMBER(tv)
#define DUK_RAW_READ_U16_BE(ptr)
#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_HCOMPILEDFUNCTION_GET_CONSTS_SIZE(heap, h)
#define DUK_RAW_WRITE_U32_BE(ptr, val)
#define DUK_HBUFFER_HAS_DYNAMIC(x)
#define DUK_HCOMPILEDFUNCTION_GET_BYTECODE(heap, h)
#define DUK_RAW_READ_U32_BE(ptr)
#define duk_push_u32(ctx, val)
#define DUK_PROPDESC_FLAGS_W
#define DUK_HOBJECT_HAS_COMPILEDFUNCTION(h)
#define DUK_HBUFFER_GET_SIZE(x)
DUK_EXTERNAL duk_bool_t duk_put_prop(duk_context *ctx, duk_idx_t obj_idx)
#define DUK_HCOMPILEDFUNCTION_GET_CONSTS_END(heap, h)
#define DUK_HCOMPILEDFUNCTION_GET_CODE_SIZE(heap, h)
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_push_fixed_buffer(ctx, size)
#define DUK_ERROR_UNSUPPORTED_DEFMSG(thr)
DUK_LOCAL duk_uint8_t * duk__dump_string_prop(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func, duk_small_uint_t stridx)
DUK_LOCAL duk_uint8_t * duk__dump_formals(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func)
#define DUK__ASSERT_LEFT(n)
DUK_LOCAL duk_uint8_t * duk__load_string_raw(duk_context *ctx, duk_uint8_t *p)
#define DUK__BYTECODE_INITIAL_ALLOC
static duk_uint8_t * duk__load_func(duk_context *ctx, duk_uint8_t *p, duk_uint8_t *p_end)
DUK_EXTERNAL void duk_load_function(duk_context *ctx)
DUK_LOCAL duk_uint8_t * duk__load_buffer_raw(duk_context *ctx, duk_uint8_t *p)
DUK_LOCAL duk_uint8_t * duk__dump_buffer_prop(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func, duk_small_uint_t stridx)
DUK_EXTERNAL void duk_dump_function(duk_context *ctx)
DUK_LOCAL duk_uint8_t * duk__dump_hstring_raw(duk_uint8_t *p, duk_hstring *h)
DUK_LOCAL duk_uint8_t * duk__dump_varmap(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func)
DUK_LOCAL duk_uint8_t * duk__dump_uint32_prop(duk_hthread *thr, duk_uint8_t *p, duk_bufwriter_ctx *bw_ctx, duk_hobject *func, duk_small_uint_t stridx, duk_uint32_t def_value)
static duk_uint8_t * duk__dump_func(duk_context *ctx, duk_hcompiledfunction *func, duk_bufwriter_ctx *bw_ctx, duk_uint8_t *p)
DUK_LOCAL duk_uint8_t * duk__dump_hbuffer_raw(duk_hthread *thr, duk_uint8_t *p, duk_hbuffer *h)
duk_hobject * builtins[DUK_NUM_BUILTINS]