- Feature detection.
- Commented out shuffle torture flag to Makefile.
- Compiler fixes to support shuffle torture: must flag even small values
with shuffle prevention flags so that they don't get shuffled forcibly.
These are not bugs as such because small flags fields are never shuffled
in normal operation. But it's cleaner to flag fields semantically anyway.
- Need as variant of loadint helper to avoid shuffling when duk__emit_xxx()
functions emit loadint for indirect opcodes like MPUTOBJI.
- Use negative "no shuffle" marker for output shuffle registers; when
shuffle torture is enabled even a zero register is shuffled.
- Other minor fixes
- Endianness for pointers and IEEE doubles
- Add DUK_OPT_DEBUGGER_DUMPHEAP feature option
- Add DUK_OPT_DEBUGGER_DUMPHEAP to Makefile
- Refactor executor and executor interrupt debugger handling to separate
functions to make them easier to read
- Explicit peek, read flush, and write flush callbacks
- Remove brkpt_dirty, easier and perhaps more robust to recheck breakpoints
whenever any debug commands have been executed
- Bug fixes, FIXME resolutions, trivia
Also remove mostly unused old debug code.
Debug code doesn't have access to 'heap' so it cannot decode pointers.
Cause an #error for now if both debug prints and pointer compression
are enabled at the same time.
Remove duk_debug_hobject.c from make and dist. It was out of date and
not used in practice anymore.
Reimplement matrix testing to support proper combination structure like
Select, Combine, Subset, etc. Avoid enumerating the matrix explicitly,
and change testing to use random sampling of the (very large) matrix space.
Improve the testing matrix to include a lot more option combinations. The
set is still not complete and output is not yet warning free with all options
so '-Werror' is not yet enabled in the matrix.
Add convenience Makefile targets like 'matrix10', 'matrix100', etc so that
small matrix tests can be easily run while developing.
Currently, it saves the output as `v20140814`, not `v20140814.tar.gz`.
And it causes build failures.
This change fixes it by specifying the output name explicitly.
Also add more AjsHeap pool sizes for measurements. The resulting pool
total size is >128kB, but only a small part of it is used. It's good
to have pool entries with 4-byte increments in the low range so that
actual used sizes can be more easily seen.
Print out the massif graph and a grepped "maximum usage" to get some
quick idea of how much memory a certain ecmascript testcase uses at
the moment. Used for e.g. a hello world memory usage test. Usage is:
"make massif-test-dev-hello-world" or "make massif-XXX" for any other
test in ecmascript-testcases/. A few convenience targets like
massif-helloworld are included.
Set --peak-inaccuracy=0.0 for massif run to get as accurate a peak
estimate as possible. (This is not that important because the measure
itself is not 100% relevant.)
Also adds a testcase needed by massif-helloworld target.
This target is used during development and the git pull just brings the
Duktape binaries up-to-date from duktape-releases. For offline use it's
nice not to fail a 'make site' when network is not available.
The 'make dist-site' target also does a git pull and won't allow an error.
By default dukweb.js gets a shallow stack intended for embedded
environments. This results in C recursion limits being hit for
large expression that work fine on the command line, see e.g.
GH-67.
Some system simulators have no network support or the network support is a
pain to configure. An ISO dist package allows easier testing. The ISO
target is now a separate target to avoid increasing the util requirements
for e.g. Cygwin builds.