Add duk_push_buffer_object() API for pushing buffer objects (e.g.
Node.js Buffer, ArrayBuffer) and buffer views (e.g. Uint32Array)
directly from C code.
In some cases missing test coverage was added, in other cases FIXMEs
were downgraded to XXX when coverage is provided by other tests but
missing from some e.g. a test exercising a certain specification section.
Ecmascript testcases now pass code policy FIXME checks.
Add an API testcase for external buffers. Also implement some TypedArray
tests which were not possible without external buffers. In particular,
test TypedArray.set() behavior when there are two different buffer objects
which point to overlapping memory areas (not normally possible with fixed
or dynamic buffers).
Also trivial testcase cleanups.
An external buffer is similar to a dynamic buffer but the external data
pointer is managed by user code rather than Duktape, and may point to an
arbitrary address. For example, user can build an external buffer which
points to a framebuffer and operate on that framebuffer from Ecmascript
code via the buffer.
If there are multiple volatile arguments in a call argument list, their
evaluation order is undefined. The IAR compiler will fail compilation
in this case (see GH-318).
Fix by assigning the volatiles to non-volatile temporaries first before
the call. This has no effect on binary size.
Add a DUK_OPT_JSON_STRINGIFY_FASTPATH feature option: the fastpath
is disabled by default due to remaining portability issues. Add a
feature option because config options and duk_config.h is not yet
the official mechanism in Duktape 1.3.