ES2015 allows primitive arguments for most of the Object built-ins.
This change implements handling for these arguments in affected methods.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
This change cleans up object deallocation, and reorganizes the code so
that we are able to do object type specific operations before the
properties are freed.
Previously this would require extra conditions that would slow things
down regardless of object type. With this change however, object type
conditions are checked only once for each possible type.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
This change brings the replace operation up to date with ES6 by
implementing support for the @@replace well-known symbol, while
also improving performance and memory usage.
Also fixes#3070.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
By appending to the end of the black object list during garbage
collection, the resulting object list will be sorted in the order of
traversal. This allows subsequent gc runs to mark surviving sub-trees in
a single iteration.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
Garbage collection can create new free blocks in the heap structure as
it releases memory, so the previous block needs to be looked up again
if a GC happens during a realloc.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
This change adds a new string builder type, that can be used to construct
strings internally by appending various types of other strings.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
Follow-up after #3008
Having Coverity as the last task is fine for pull requests, but on the
master branch, where the task actually performs the scans, it can have a
large delay on the builds.
This change moves the Coverity task back to the middle ground, and puts
the ESP8266 build as the last, which seems to always run fast. This saves a
few extra minutes of build time on the master branch.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
Follow-up after #3015
The fix backport has landed, and the branch has been deleted. Revert back to
the the v1.14 branch.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
This PR reduces the time it takes for Travis to complete the checks.
The following changes are made:
- Disabled LTO for test builds
- Merged Debugger tests into x86-64 Conformance tests
- Moved the INIT_FINI unittests into the regular unittests
- Merged SonarQube and Coverity Scan tasks
- Re-arranged some of the tasks
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
This patch extends jmem functionality by adding a realloc function.
This opens up other paths of optimization which can result in smaller
peak memory usage and faster execution times, due to not having to
duplicate memory when we need to extend blocks.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
This change adds a build option that allows adjusting the garbage
collection heap usage limit, which can be used to fine-tune how often
garbage collection should be triggered.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
The current module implementation resolves module paths relative to the
current working directory, but paths should be resolved relative to the
currently evaluated module/source.
This requires a change in the jerry_port_normalize_path port API
function, so that it also takes the current module path as an argument.
On the engine side, we now also create a module object for the main
script, so that we can properly identify the base path for other
modules.
Co-authored-by: Marko Fabo <[email protected]>
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
This PR is a general cleanup for garbage collection and memory
allocation code paths.
Changes:
* Removed an unnecesary local variable from 'ecma_gc_mark'.
* Refactored 'ecma_gc_run' to have an implicit list head during
iteration, which results in one less condition in the loops,
and changed the loops to use compressed pointers to reduce the
overall amount of compression/decompression.
* Renamed 'jmem_free_unused_memory_severity_t' to 'jmem_pressure_t',
and added additional values.
* Removed 'jmem_free_unused_memory_callback', instead
'ecma_free_unused_memory' is now called directly.
* Reworked 'ecma_free_unused_memory' to handle all code paths related
to 'jmem_pressure_t', and moved all relevant code paths into this
function. This simplifies the code paths in other places.
* Reworked 'jmem_heap_gc_and_alloc_block' to be more streamlined.
* Changed mem-stats to not report unused pool chunks as allocated
memory.
* Created an allocator internal API for allocating/freeing memory blocks
that are not reported as used memory in mem-stats.
* Removed iteration statistics for the jerry allocator from mem-stats,
as they don't provide any actually useful information.
Co-authored-by: Marko Fabo <[email protected]>
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
When using ES6 modules it was not possible to identify which module
an error originates from.
This PR changes the error message to also include the file path using
the file:line:column format, and updates the source context printing for
unhandled exceptions to use the correct file.
Co-authored-by: Marko Fabo <[email protected]>
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
Collection headers are allocated using the pool allocator, so they
should be freed by it as well.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
Updated the default port so that it now provides path normalization for
common platforms.
Co-authored-by: Marko Fabo <[email protected]>
JerryScript-DCO-1.0-Signed-off-by: Marko Fabo [email protected]
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
The NuttX target has been problematic for some time, due to the fact
that NuttX apps are built with NuttX's own libc implementation, while
the default-port in JerryScript was compiled with the host libc, which
caused a mismatch between the two.
In order to work around this issue, most of the port implementation is already
duplicated in the NuttX target's jerry_main.c.
This PR adds a NuttX specific port implementation by moving the already
implemented port functions from jerry_main into a separate file, adding
implementation for the missing functions, and disabling the default-port
in JerryScript.
Co-authored-by: Marko Fabo <[email protected]>
JerryScript-DCO-1.0-Signed-off-by: Marko Fabo [email protected]
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
This fixes an assertion failure which was caused by incorrectly importing
the same variables multiple times.
Co-authored-by: Marko Fabo <[email protected]>
JerryScript-DCO-1.0-Signed-off-by: Marko Fabo [email protected]
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]
The radix conversion code path was very messy which made it hard to understand
what was happening inside of it. The code got cleaned up, and a lot of comments
were added that explain what is happening and why.
JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai [email protected]