Duktape: Update to 2.4.0 release.
This commit is contained in:
parent
3114e78ded
commit
b4bbca89cd
|
@ -18,6 +18,7 @@
|
|||
* - QNX
|
||||
* - TI-Nspire
|
||||
* - Emscripten
|
||||
* - Android
|
||||
* - Linux
|
||||
* - Solaris
|
||||
* - AIX
|
||||
|
@ -170,6 +171,10 @@
|
|||
#define DUK_F_BCC
|
||||
#endif
|
||||
|
||||
#if defined(ANDROID) || defined(__ANDROID__)
|
||||
#define DUK_F_ANDROID
|
||||
#endif
|
||||
|
||||
/* Linux */
|
||||
#if defined(__linux) || defined(__linux__) || defined(linux)
|
||||
#define DUK_F_LINUX
|
||||
|
@ -246,9 +251,9 @@
|
|||
#endif
|
||||
|
||||
/* ARM */
|
||||
#if defined(__arm__) || defined(__thumb__) || defined(_ARM) || defined(_M_ARM) || defined(__aarch64__)
|
||||
#if defined(__arm__) || defined(__thumb__) || defined(_ARM) || defined(_M_ARM) || defined(_M_ARM64) || defined(__aarch64__)
|
||||
#define DUK_F_ARM
|
||||
#if defined(__LP64__) || defined(_LP64) || defined(__arm64) || defined(__arm64__) || defined(__aarch64__)
|
||||
#if defined(__LP64__) || defined(_LP64) || defined(__arm64) || defined(__arm64__) || defined(_M_ARM64) || defined(__aarch64__)
|
||||
#define DUK_F_ARM64
|
||||
#else
|
||||
#define DUK_F_ARM32
|
||||
|
@ -356,10 +361,6 @@
|
|||
#define DUK_F_VBCC
|
||||
#endif
|
||||
|
||||
#if defined(ANDROID) || defined(__ANDROID__)
|
||||
#define DUK_F_ANDROID
|
||||
#endif
|
||||
|
||||
/* Atari Mint */
|
||||
#if defined(__MINT__)
|
||||
#define DUK_F_MINT
|
||||
|
@ -665,6 +666,41 @@
|
|||
#define DUK_USE_DATE_FMT_STRFTIME
|
||||
|
||||
#define DUK_USE_OS_STRING "emscripten"
|
||||
#elif defined(DUK_F_ANDROID)
|
||||
/* --- Android --- */
|
||||
#if defined(DUK_COMPILING_DUKTAPE)
|
||||
#if !defined(_POSIX_C_SOURCE)
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#endif
|
||||
#if !defined(_GNU_SOURCE)
|
||||
#define _GNU_SOURCE /* e.g. getdate_r */
|
||||
#endif
|
||||
#if !defined(_XOPEN_SOURCE)
|
||||
#define _XOPEN_SOURCE /* e.g. strptime */
|
||||
#endif
|
||||
#endif /* DUK_COMPILING_DUKTAPE */
|
||||
|
||||
#include <sys/types.h>
|
||||
#if defined(DUK_F_BCC)
|
||||
/* no endian.h or stdint.h */
|
||||
#else
|
||||
#include <endian.h>
|
||||
#include <stdint.h>
|
||||
#endif /* DUK_F_BCC */
|
||||
#include <sys/param.h>
|
||||
#include <sys/time.h>
|
||||
#include <time.h>
|
||||
|
||||
#define DUK_USE_DATE_NOW_GETTIMEOFDAY
|
||||
#define DUK_USE_DATE_TZO_GMTIME_R
|
||||
#define DUK_USE_DATE_PRS_STRPTIME
|
||||
#define DUK_USE_DATE_FMT_STRFTIME
|
||||
|
||||
#if 0 /* XXX: safe condition? */
|
||||
#define DUK_USE_GET_MONOTONIC_TIME_CLOCK_GETTIME
|
||||
#endif
|
||||
|
||||
#define DUK_USE_OS_STRING "android"
|
||||
#elif defined(DUK_F_LINUX)
|
||||
/* --- Linux --- */
|
||||
#if defined(DUK_COMPILING_DUKTAPE)
|
||||
|
@ -1069,6 +1105,18 @@
|
|||
|
||||
#undef DUK_USE_GCC_PRAGMAS
|
||||
#define DUK_USE_PACK_CLANG_ATTR
|
||||
|
||||
#if defined(__clang__) && defined(__has_builtin)
|
||||
#if __has_builtin(__builtin_bswap64)
|
||||
#define DUK_BSWAP64(x) ((duk_uint64_t) __builtin_bswap64((duk_uint64_t) (x)))
|
||||
#endif
|
||||
#if __has_builtin(__builtin_bswap32)
|
||||
#define DUK_BSWAP32(x) ((duk_uint32_t) __builtin_bswap32((duk_uint32_t) (x)))
|
||||
#endif
|
||||
#if __has_builtin(__builtin_bswap16)
|
||||
#define DUK_BSWAP16(x) ((duk_uint16_t) __builtin_bswap16((duk_uint16_t) (x)))
|
||||
#endif
|
||||
#endif
|
||||
#elif defined(DUK_F_GCC)
|
||||
/* --- GCC --- */
|
||||
#if defined(DUK_F_C99) || defined(DUK_F_CPP11)
|
||||
|
@ -1079,13 +1127,17 @@
|
|||
#define DUK_VA_COPY(dest,src) __va_copy(dest,src)
|
||||
#endif
|
||||
|
||||
#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 20500L)
|
||||
/* since gcc-2.5 */
|
||||
#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 20500L) && (DUK_F_GCC_VERSION < 50000L)
|
||||
/* Since gcc-2.5.
|
||||
*
|
||||
* Disabled temporarily in GCC 5+ because of an unresolved noreturn-related
|
||||
* issue: https://github.com/svaarala/duktape/issues/2155.
|
||||
*/
|
||||
#define DUK_NORETURN(decl) decl __attribute__((noreturn))
|
||||
#endif
|
||||
|
||||
#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 40500L)
|
||||
/* since gcc-4.5 */
|
||||
/* Since gcc-4.5. */
|
||||
#define DUK_UNREACHABLE() do { __builtin_unreachable(); } while (0)
|
||||
#endif
|
||||
|
||||
|
@ -1198,6 +1250,16 @@
|
|||
#endif
|
||||
|
||||
#define DUK_USE_PACK_GCC_ATTR
|
||||
|
||||
/* Availability varies based on platform (between GCC 4.4 and 4.8), and there
|
||||
* are apparently some bugs in GCC 4.x. Check for GCC 5.0 before enabling
|
||||
* these to be safe.
|
||||
*/
|
||||
#if defined(DUK_F_GCC_VERSION) && (DUK_F_GCC_VERSION >= 50000L)
|
||||
#define DUK_BSWAP64(x) ((duk_uint64_t) __builtin_bswap64((duk_uint64_t) (x)))
|
||||
#define DUK_BSWAP32(x) ((duk_uint32_t) __builtin_bswap32((duk_uint32_t) (x)))
|
||||
#define DUK_BSWAP16(x) ((duk_uint16_t) __builtin_bswap16((duk_uint16_t) (x)))
|
||||
#endif
|
||||
#elif defined(DUK_F_MSVC)
|
||||
/* --- MSVC --- */
|
||||
/* http://msdn.microsoft.com/en-us/library/aa235362(VS.60).aspx */
|
||||
|
@ -2504,7 +2566,7 @@ typedef struct duk_hthread duk_context;
|
|||
#define DUK_USE_ALIGN_BY 8
|
||||
#endif
|
||||
|
||||
/* Compiler specific hackery needed to force struct size to match aligment,
|
||||
/* Compiler specific hackery needed to force struct size to match alignment,
|
||||
* see e.g. duk_hbuffer.h.
|
||||
*
|
||||
* http://stackoverflow.com/questions/11130109/c-struct-size-alignment
|
||||
|
@ -2515,6 +2577,13 @@ typedef struct duk_hthread duk_context;
|
|||
#define DUK_USE_PACK_DUMMY_MEMBER
|
||||
#endif
|
||||
|
||||
#if !defined(DUK_U64_CONSTANT)
|
||||
#define DUK_U64_CONSTANT(x) x##ULL
|
||||
#endif
|
||||
#if !defined(DUK_I64_CONSTANT)
|
||||
#define DUK_I64_CONSTANT(x) x##LL
|
||||
#endif
|
||||
|
||||
#if !defined(DUK_VA_COPY)
|
||||
/* We need va_copy() which is defined in C99 / C++11, so an awkward
|
||||
* replacement is needed for pre-C99 / pre-C++11 environments. This
|
||||
|
@ -2665,17 +2734,30 @@ typedef struct duk_hthread duk_context;
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(DUK_F_HAVE_64BIT)
|
||||
#if !defined(DUK_BSWAP64)
|
||||
#define DUK_BSWAP64(x) \
|
||||
((((duk_uint64_t) (x)) >> 56U) | \
|
||||
((((duk_uint64_t) (x)) >> 40U) & DUK_U64_CONSTANT(0xff00)) | \
|
||||
((((duk_uint64_t) (x)) >> 24U) & DUK_U64_CONSTANT(0xff0000)) | \
|
||||
((((duk_uint64_t) (x)) >> 8U) & DUK_U64_CONSTANT(0xff000000)) | \
|
||||
((((duk_uint64_t) (x)) << 8U) & DUK_U64_CONSTANT(0xff00000000)) | \
|
||||
((((duk_uint64_t) (x)) << 24U) & DUK_U64_CONSTANT(0xff0000000000)) | \
|
||||
((((duk_uint64_t) (x)) << 40U) & DUK_U64_CONSTANT(0xff000000000000)) | \
|
||||
(((duk_uint64_t) (x)) << 56U))
|
||||
#endif
|
||||
#endif
|
||||
#if !defined(DUK_BSWAP32)
|
||||
#define DUK_BSWAP32(x) \
|
||||
((((duk_uint32_t) (x)) >> 24) | \
|
||||
((((duk_uint32_t) (x)) >> 8) & 0xff00UL) | \
|
||||
((((duk_uint32_t) (x)) << 8) & 0xff0000UL) | \
|
||||
(((duk_uint32_t) (x)) << 24))
|
||||
((((duk_uint32_t) (x)) >> 24U) | \
|
||||
((((duk_uint32_t) (x)) >> 8U) & 0xff00UL) | \
|
||||
((((duk_uint32_t) (x)) << 8U) & 0xff0000UL) | \
|
||||
(((duk_uint32_t) (x)) << 24U))
|
||||
#endif
|
||||
#if !defined(DUK_BSWAP16)
|
||||
#define DUK_BSWAP16(x) \
|
||||
((duk_uint16_t) (x) >> 8) | \
|
||||
((duk_uint16_t) (x) << 8)
|
||||
((duk_uint16_t) (x) >> 8U) | \
|
||||
((duk_uint16_t) (x) << 8U)
|
||||
#endif
|
||||
|
||||
/* DUK_USE_VARIADIC_MACROS: required from compilers, so no fill-in. */
|
||||
|
@ -2698,13 +2780,6 @@ typedef struct duk_hthread duk_context;
|
|||
#undef DUK_USE_GCC_PRAGMAS
|
||||
#endif
|
||||
|
||||
#if !defined(DUK_U64_CONSTANT)
|
||||
#define DUK_U64_CONSTANT(x) x##ULL
|
||||
#endif
|
||||
#if !defined(DUK_I64_CONSTANT)
|
||||
#define DUK_I64_CONSTANT(x) x##LL
|
||||
#endif
|
||||
|
||||
/* Workaround for GH-323: avoid inlining control when compiling from
|
||||
* multiple sources, as it causes compiler portability trouble.
|
||||
*/
|
||||
|
@ -2807,7 +2882,6 @@ typedef struct duk_hthread duk_context;
|
|||
#define DUK_USE_CACHE_ACTIVATION
|
||||
#define DUK_USE_CACHE_CATCHER
|
||||
#define DUK_USE_CALLSTACK_LIMIT 10000
|
||||
#define DUK_USE_COMMONJS_MODULES
|
||||
#define DUK_USE_COMPILER_RECLIMIT 2500
|
||||
#define DUK_USE_COROUTINE_SUPPORT
|
||||
#undef DUK_USE_CPP_EXCEPTIONS
|
||||
|
@ -2912,6 +2986,7 @@ typedef struct duk_hthread duk_context;
|
|||
#define DUK_USE_MARK_AND_SWEEP_RECLIMIT 256
|
||||
#define DUK_USE_MATH_BUILTIN
|
||||
#define DUK_USE_NATIVE_CALL_RECLIMIT 1000
|
||||
#undef DUK_USE_NATIVE_STACK_CHECK
|
||||
#define DUK_USE_NONSTD_ARRAY_SPLICE_DELCOUNT
|
||||
#undef DUK_USE_NONSTD_FUNC_CALLER_PROPERTY
|
||||
#undef DUK_USE_NONSTD_FUNC_SOURCE_PROPERTY
|
||||
|
@ -2962,12 +3037,11 @@ typedef struct duk_hthread duk_context;
|
|||
#define DUK_USE_STRTAB_RESIZE_CHECK_MASK 255
|
||||
#define DUK_USE_STRTAB_SHRINK_LIMIT 6
|
||||
#undef DUK_USE_STRTAB_TORTURE
|
||||
#undef DUK_USE_SYMBOL_BUILTIN
|
||||
#define DUK_USE_SYMBOL_BUILTIN
|
||||
#define DUK_USE_TAILCALL
|
||||
#define DUK_USE_TARGET_INFO "unknown"
|
||||
#define DUK_USE_TRACEBACKS
|
||||
#define DUK_USE_TRACEBACK_DEPTH 10
|
||||
#define DUK_USE_USER_DECLARE() /* no user declarations */
|
||||
#define DUK_USE_VALSTACK_GROW_SHIFT 2
|
||||
#define DUK_USE_VALSTACK_LIMIT 1000000L
|
||||
#define DUK_USE_VALSTACK_SHRINK_CHECK_SHIFT 2
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Duktape public API for Duktape 2.3.0.
|
||||
* Duktape public API for Duktape 2.4.0.
|
||||
*
|
||||
* See the API reference for documentation on call semantics. The exposed,
|
||||
* supported API is between the "BEGIN PUBLIC API" and "END PUBLIC API"
|
||||
|
@ -21,7 +21,7 @@
|
|||
*
|
||||
* (http://opensource.org/licenses/MIT)
|
||||
*
|
||||
* Copyright (c) 2013-2018 by Duktape authors (see AUTHORS.rst)
|
||||
* Copyright (c) 2013-2019 by Duktape authors (see AUTHORS.rst)
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -100,6 +100,15 @@
|
|||
* * Michal Kasperek (https://github.com/michalkas)
|
||||
* * Andrew Janke (https://github.com/apjanke)
|
||||
* * Steve Fan (https://github.com/stevefan1999)
|
||||
* * Edward Betts (https://github.com/edwardbetts)
|
||||
* * Ozhan Duz (https://github.com/webfolderio)
|
||||
* * Akos Kiss (https://github.com/akosthekiss)
|
||||
* * TheBrokenRail (https://github.com/TheBrokenRail)
|
||||
* * Jesse Doyle (https://github.com/jessedoyle)
|
||||
* * Gero Kuehn (https://github.com/dc6jgk)
|
||||
* * James Swift (https://github.com/phraemer)
|
||||
* * Luis de Bethencourt (https://github.com/luisbg)
|
||||
* * Ian Whyman (https://github.com/v00d00)
|
||||
*
|
||||
* Other contributions
|
||||
* ===================
|
||||
|
@ -140,6 +149,8 @@
|
|||
* * Neil Kolban (https://github.com/nkolban)
|
||||
* * Wilhelm Wanecek (https://github.com/wanecek)
|
||||
* * Andrew Janke (https://github.com/apjanke)
|
||||
* * Unamer (https://github.com/unamer)
|
||||
* * Karl Dahlke (eklhad@gmail.com)
|
||||
*
|
||||
* If you are accidentally missing from this list, send me an e-mail
|
||||
* (``sami.vaarala@iki.fi``) and I'll fix the omission.
|
||||
|
@ -164,7 +175,7 @@
|
|||
* development snapshots have 99 for patch level (e.g. 0.10.99 would be a
|
||||
* development version after 0.10.0 but before the next official release).
|
||||
*/
|
||||
#define DUK_VERSION 20300L
|
||||
#define DUK_VERSION 20400L
|
||||
|
||||
/* Git commit, describe, and branch for Duktape build. Useful for
|
||||
* non-official snapshot builds so that application code can easily log
|
||||
|
@ -447,18 +458,24 @@ struct duk_time_components {
|
|||
* Macros to create Symbols as C statically constructed strings.
|
||||
*
|
||||
* Call e.g. as DUK_HIDDEN_SYMBOL("myProperty") <=> ("\xFF" "myProperty").
|
||||
*
|
||||
* Local symbols have a unique suffix, caller should take care to avoid
|
||||
* conflicting with the Duktape internal representation by e.g. prepending
|
||||
* a '!' character: DUK_LOCAL_SYMBOL("myLocal", "!123").
|
||||
*
|
||||
* Note that these can only be used for string constants, not dynamically
|
||||
* created strings.
|
||||
*
|
||||
* You shouldn't normally use DUK_INTERNAL_SYMBOL() at all. It is reserved
|
||||
* for Duktape internal symbols only. There are no versioning guarantees
|
||||
* for internal symbols.
|
||||
*/
|
||||
|
||||
#define DUK_HIDDEN_SYMBOL(x) ("\xFF" x)
|
||||
#define DUK_GLOBAL_SYMBOL(x) ("\x80" x)
|
||||
#define DUK_LOCAL_SYMBOL(x,uniq) ("\x81" x "\xff" uniq)
|
||||
#define DUK_WELLKNOWN_SYMBOL(x) ("\x81" x "\xff")
|
||||
#define DUK_INTERNAL_SYMBOL(x) ("\x82" x)
|
||||
|
||||
/*
|
||||
* If no variadic macros, __FILE__ and __LINE__ are passed through globals
|
||||
|
@ -703,6 +720,7 @@ DUK_EXTERNAL_DECL void duk_push_thread_stash(duk_context *ctx, duk_context *targ
|
|||
DUK_EXTERNAL_DECL duk_idx_t duk_push_object(duk_context *ctx);
|
||||
DUK_EXTERNAL_DECL duk_idx_t duk_push_bare_object(duk_context *ctx);
|
||||
DUK_EXTERNAL_DECL duk_idx_t duk_push_array(duk_context *ctx);
|
||||
DUK_EXTERNAL_DECL duk_idx_t duk_push_bare_array(duk_context *ctx);
|
||||
DUK_EXTERNAL_DECL duk_idx_t duk_push_c_function(duk_context *ctx, duk_c_function func, duk_idx_t nargs);
|
||||
DUK_EXTERNAL_DECL duk_idx_t duk_push_c_lightfunc(duk_context *ctx, duk_c_function func, duk_idx_t nargs, duk_idx_t length, duk_int_t magic);
|
||||
DUK_EXTERNAL_DECL duk_idx_t duk_push_thread_raw(duk_context *ctx, duk_uint_t flags);
|
||||
|
@ -937,6 +955,8 @@ DUK_EXTERNAL_DECL duk_context *duk_require_context(duk_context *ctx, duk_idx_t i
|
|||
DUK_EXTERNAL_DECL void duk_require_function(duk_context *ctx, duk_idx_t idx);
|
||||
#define duk_require_callable(ctx,idx) \
|
||||
duk_require_function((ctx), (idx))
|
||||
DUK_EXTERNAL_DECL void duk_require_constructor_call(duk_context *ctx);
|
||||
DUK_EXTERNAL_DECL void duk_require_constructable(duk_context *ctx, duk_idx_t idx);
|
||||
DUK_EXTERNAL_DECL void *duk_require_heapptr(duk_context *ctx, duk_idx_t idx);
|
||||
|
||||
/* Symbols are object coercible and covered by DUK_TYPE_MASK_STRING. */
|
||||
|
@ -986,6 +1006,8 @@ DUK_EXTERNAL_DECL void duk_to_primitive(duk_context *ctx, duk_idx_t idx, duk_int
|
|||
|
||||
/* safe variants of a few coercion operations */
|
||||
DUK_EXTERNAL_DECL const char *duk_safe_to_lstring(duk_context *ctx, duk_idx_t idx, duk_size_t *out_len);
|
||||
DUK_EXTERNAL_DECL const char *duk_to_stacktrace(duk_context *ctx, duk_idx_t idx);
|
||||
DUK_EXTERNAL_DECL const char *duk_safe_to_stacktrace(duk_context *ctx, duk_idx_t idx);
|
||||
#define duk_safe_to_string(ctx,idx) \
|
||||
duk_safe_to_lstring((ctx), (idx), NULL)
|
||||
|
||||
|
|
Loading…
Reference in New Issue