Added extra notes on the native pointer API usages to clarify
when the free callback function is invoked. Also added a note
for the free callback typedef to inform users to not call API methods
in the callback.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
When reading from the stdin a '\n' character or an empty line/file
was expected to end the read. However, in case of an input which is not terminated
with a newline a buffer overflow will occur.
Test case:
```sh
$ echo -n "print('a')" | ./build/bin/jerry
```
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Previously the #line macro directives were always included in the
generated single source output. However, this adds quite a lot of
size to the source file (not to the binary) and it is only useful
for the library developers. Hence, it is now disabled by default.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In case of TypedArrays which were constructed with an ArrayBuffer
the `slice` method incorrectly added the `byteOffset` value of
when the elements were copied.
There is no need to add the `byteOffset` value for the ArrayBuffer's
contents pointer as it is already added by the `ecma_typedarray_get_buffer`
call.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The "super prop ref" flag is incorrectly used at multiple expressions
as it was only cleared if there was an assignment operation.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In the jerry-ext there is a native 'assert' handler implemented.
This change adds extra backtrace information if an 'assert' call fails.
To print out the backtrace the library should be built with `JERRY_LINE_INFO` enabled.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The snapshot API docs describe that those functions returns error if
the related features are not enabled. Updated the return values to follow
the API documentation.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Previously after the library was build there was no easy way
to get back the information of how it was build.
This change adds a bit of CMake code to generate the
jerryscript-config.h file containing the default options
and adding the modified build options/features.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
There are two interconnected changes here:
* Added missing argument number handling for `super.propname(..)` calls.
* The `super.propname.call(...)` is does not need extra 'this' binding helper.
Fixes#2990.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In `ecma-helpers.c` there was an incorrect macro guard which
tested the `JERRY_ES2015` feature but the `JERRY_ES2015_CLASS`
feature should be tested instead.
Profile options for testing:
* JERRY_ES2015=0
* JERRY_ES2015_CLASS=1
* JERRY_ES2015_OBJECT_INITIALIZER=1
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
New methods
* jerryx_set_properties: Allows multiple property registration for via a single call
* jerryx_set_property_str: Allows property registration without the need to
create the property name JS value. The property name can be directly passed
as a `const char*` value and must be zero terminated.
* jerryx_get_property_str: Allows getting a property value on a given object.
The property name can be directly passed as a `const char*` value.
* jerryx_has_property_str: Allows checking if a property exists on a given object.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Detected and fixed minor issues with the single-source generation:
* On Windows the line info generation now correctly escapes the path separators.
* Fixed an incorrect C file include order. Now the global object C file is
force included to get all common headers at the start in the generated source
file.
* Added a missing colon which fixed the correct removal of the config.h include.
* Fix the command line help.
* Small typo fix.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Changes done:
* Added usage/configuration info for this mode.
* Created `tools/srcgenerator.py` to allow source/header generation
without using CMake.
* Adapted CMake to use the `srcgenerator.py` script.
* Added jerry-libm single-source build.
* Improved the `srcmerger.py` script to correctly handle the line numbering.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The documentation of `jerry_get_memory_stats` method was missing
the requirements on what build option or feature is required.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
A few parts of the API documentation was not clear enough.
Added extra details and examples.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
There are quite a few configuration macros in the project.
As discussed in the #2520 issue there are a few awkward constructs.
Main changes:
* The following macros are now 0/1 switches:
** Renamed CONFIG_ECMA_LCACHE_DISABLE to JERRY_LCACHE.
** Renamed CONFIG_ECMA_PROPERTY_HASHMAP_DISABLE to JERRY_PROPERTY_HASHMAP.
** Renamed CONFIG_DISABLE_UNICODE_CASE_CONVERSION to JERRY_UNICODE_CASE_CONVERSION.
** Renamed ENABLE_REGEXP_STRICT_MODE to JERRY_REGEXP_STRICT_MODE.
** Renamed JERRY_DISABLE_JS_PARSER to JERRY_PARSER.
** Renamed JERRY_ENABLE_ERROR_MESSAGES to JERRY_ERROR_MESSAGES.
** Renamed JERRY_ENABLE_EXTERNAL_CONTEXT to JERRY_EXTERNAL_CONTEXT.
** Renamed JERRY_ENABLE_LINE_INFO to JERRY_LINE_INFO.
** Renamed JERRY_ENABLE_LOGGING to JERRY_LOGGING.
** Renamed JERRY_ENABLE_SNAPSHOT_EXEC to JERRY_SNAPSHOT_EXEC.
** Renamed JERRY_ENABLE_SNAPSHOT_SAVE to JERRY_SNAPSHOT_SAVE.
** Renamed JERRY_SYSTEM_ALLOCATOR to JERRY_SYSTEM_ALLOCATOR.
** Renamed JERRY_VM_EXEC_STOP to JERRY_VM_EXEC_STOP.
** Renamed JMEM_GC_BEFORE_EACH_ALLOC to JERRY_MEM_GC_BEFORE_EACH_ALLOC.
** Renamed JMEM_STATS to JERRY_MEM_STATS.
** Renamed PARSER_DUMP_BYTE_CODE to JERRY_PARSER_DUMP_BYTE_CODE.
** Renamed REGEXP_DUMP_BYTE_CODE to JERRY_REGEXP_DUMP_BYTE_CODE.
* Recursion check changes:
** Renamed REGEXP_RECURSION_LIMIT to JERRY_REGEXP_RECURSION_LIMIT.
** Renamed VM_RECURSION_LIMIT to JERRY_VM_RECURSION_LIMIT.
* Attribute macro changes:
** Renamed JERRY_CONST_DATA to JERRY_ATTR_CONST_DATA.
** Renamed JERRY_HEAP_SECTION_ATTR to JERRY_ATTR_GLOBAL_HEAP.
Now the macro can specify any attribute for the global heap object.
* Other macro changes:
** Renamed CONFIG_MEM_HEAP_AREA_SIZE to JERRY_GLOBAL_HEAP_SIZE.
Then new macro now specify the global heap size in kilobytes.
* Updated documentations to reflect the new macro names.
For more deatils please see jerry-core/config.h.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
There are quite a few configuration macros in the project.
As discussed in the #2520 issue there are a few awkward constructs.
Main changes:
* Renamed all CONFIG_DISABLE_<name>_BUILTIN macro to JERRY_BUILTIN_<name> format.
* The special JERRY_BUILTINS macro specifies the basic config for all es5.1 builtins.
* Renamed all CONFIG_DISABLE_ES2015_<name> to JERRY_ES2015_<name> format.
* The special JERRY_ES2015 macro specifies the basic config for all es2015 builtins.
* Renamed UNICODE_CASE_CONVERSION to JERRY_UNICODE_CASE_CONVERSION.
* Renamed ENABLE_REGEXP_STRICT_MODE to JERRY_REGEXP_STRICT_MODE.
* All options (in this change) can have a value of 0 or 1.
* Renamed ENABLE_REGEXP_STRICT_MODE to JERRY_REGEXP_STRICT_MODE.
JERRY_REGEXP_STRICT_MODE is set to 0 by default.
* Reworked CONFIG_ECMA_NUMBER_TYPE macro to JERRY_NUMBER_TYPE_FLOAT64 name and now
it uses the value 1 for 64 bit floating point numbers and 0 for 32 bit floating point
number.
By default the 64-bit floating point number mode is enabled.
* All new JERRY_ defines can be used wit the `#if ENABLED (JERRY_...)` construct to
test if the feature is enabled or not.
* Added/replaced a few config.h includes to correctly propagate the macro values.
* Added sanity checks for each macro to avoid incorrectly set values.
* Updated profile documentation.
* The CMake feature names are not updated at this point.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Introduce a new way of building: before any file is compiled
all source files are combined into a single C file and all
header files into a single H file (per subdir).
This new approach makes it possible to quickly integrate JerryScript
into other projects:
```
$ gcc -o demo demo.c jerryscript.c jerryscript-port-default.c -lm
```
To use the source generator run:
```
$ cmake -Bbuild_dir -H. -DENABLE_ALL_IN_ONE_SOURCE=ON
$ make -C build_dir generate-single-source
```
This will create the following files in the `build_dir`:
* jerryscript.c
* jerryscript.h
* jerryscript-config.h
* jerryscript-port-default.c
* jerryscript-port-default.h
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The cppcheck can run for quite a long time, sometimes even more than
10 minutes. This change splits the test execution into two part:
* First, do all checks excluding the cppcheck call with the default timeout.
* Second, do the cppcheck call with a 30 minutes maximum timeout.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In the previous approach `jerryx_port_handler_print_char` was implemented
in by the jerry-default-port. This implementation however required the
jerry-ext handler header file which created a requirement in the
jerry-default-port for the jerry-ext headers.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Changed the debugger-tcp.c file to include Windows specific
socket handling code and mode user all components are compilable
for Windows.
Added appveyor configuration to build with and without debugger.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In the snapshot tool the files were opened
in text mode. However the snapshot files
are binary files thus it is advised to use the
binary mode when opening the files.
Specifying the binary mode is a must on Windows
platform otherwise the read/write operations
are inserting extra '\r' characters.
To make the tools consitent across OSes all
fopen are now opening files in binary mode.
Also update jerry-libc to accept the 'b'
modifier and add a test case where the JS
file uses CR-LF line endings.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The license checker previously assumed that the
lines of the license will always end with \n
characters. However when checking a file
it could happen that other line endings are
returned (should only happen for test files) thus
the checker can incorrectly report invalid license
as the line endings are incorrect.
Additional note #1: in Python when reading a file
in text mode it can happen that the line endings are
converted to the host system's line ending.
However on Travis the conversion did not happen when
using the open built-in method. By switching to the
io.open call the conversion is enforced and
all line endings are converted to '\n' regardless of
the host system's line ending.
Additional note #2: it is possible that there
are input test files which are not utf-8 conformant
(eg.: to test the parser). These files can't be read
as utf-8 strings and an exception would occur.
By ignoring these errors the tool can check
the file's license. In the license text there is no
invalid utf-8 character so the check will work
correctly.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
When the `jerry_substring_to_utf8_char_buffer` was called
with direct strings the assert incorrectly assumed that the
string is a ref counted string and tried to access the
refcount value resulting in a failed assert.
Added direct string check for the underlying implementation
and created a test case for such simple string.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The old `jerry_value_has_error_flag` function was used
when the #2249 PR was merged.
Replaced with the correct `jerry_value_is_error` call.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The `args_length` variable in the `ecma_builtin_function_prototype_object_bind`
method is not needed, the `arguments_number` variable can be
directly used.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
There was a typo in the `ecma_builtin_array_prototype_helper_set_length`
method as the comma operator was used to close the statement, incorrectly
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In the `ecma_string_get_chars` method
the contents of a direct string is accessed incorrectly.
It tries to extract the magic string id from the
string pointer but the direct string does not need
this step.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
By removing the ECMA_TRY_CATCH macros at these
places ~200 bytes of .text is saved on rpi2.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In one of the previous PR we have encountered a problem,
where the Travis cuts off the test execution
as the generated log file is too big.
By adding a quiet mode for the test runners, we will
only report the failing tests.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In jrt.h the _XOPEN_SOURCE macro is defined.
However if the compiler already specifies this as
a default define, it can lead to compiler warnings
or errors.
By adding a macro check the warnings/errors can be
avoided.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
There was an OpenWrt toolchain file however it's a bit outdated and
we did not have any guide on how to build for this target at all.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
New api function:
* jerry_get_error_type
Additionally update a few places where this new function
can be used.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
By adding version information to the debugger protocol
it is possible to report if the debugger client and server
have different expectations on debugger workings (opcodes, types, etc.).
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Add C API to work with Array Buffers.
The following methods are added:
- jerry_value_is_arraybuffer
- jerry_create_arraybuffer
- jerry_arraybuffer_write
- jerry_arraybuffer_read
- jerry_get_arraybuffer_byte_length
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Building with all-in-one and enabled debugger caused
errors as the sleep functions were not defined.
By moving the _XOPEN_SOURCE macro to a generic place
we make sure that the required sleep functions are
present in every case.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The test262 python script is not python 3 compatible
so we force it to be executed with python2.
Additionally print out the reason if the execution
failed.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
On Travis the Python (by default) is a bit old
and causes problems when the yotta is being used.
Switching to Python 2.7.13 solves half of the problem.
The other problem is the pyOpenSSL 17.5 and Linux
library incompatibilities. Thus we force the pyOpenSSL
to a pre-17.5 version.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Changes:
* Added support for Python3
* Suppressed the build output text
* Code cleanup
* Fixed pylint warnings
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Now there is a snapshot tool which can merge snapshots
but was unable to generate snapshots by itself.
This change moves the snapshot generation utilities
to the snapshot tool.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
On Travis the pylint package can't be installed
due to insufficient permissions.
To fix this we'll try to install the package for the user
and not for the system.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Added two new api functions:
* jerry_parse_and_save_function_snapshot
* jerry_load_function_snapshot_at
The jerry_parse_and_save_function_snapshot function allows
creating snapshots from snapshot arguments and body source.
The jerry_load_function_snapshot_at function enables loading
back functions from a given snapshot as a JS function object.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
are not accepted. This is a bug in gcc 7.
For now disable the fallthrough comment detection.
Disabling the check does not introduce any risk
as previously it was not enabled by default and
vera++ already check these kind of comments.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Without the file renaming there are two jerry-debugger.c files.
Thus when the jerry-core archive is created there are two objects
in it with the same name. Generally this does not create any problems.
However if the archive is extracted then the second object file
will overwrite the first one which results in undefined reference
linkage error.
The jerry- prefix was removed from the file names and
fixed the include oreders where it was needed.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In the jerry_set_prototype part the method was described
as jerry_get_prototype. Minor typo fix.
The usage of jerry_set_property was incorrect. Each
call to the jerry_set_property returns a value which must be freed.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Add a notification for JerryScript API users that the jerry-api.h
will be removed in the future and should use the jerryscript.h
header instead.
Also update the examples in the docs and the targets where
the jerry-api.h is used.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
On Linux the original tr call did nothing and thus the Makefile
tried to load the toolchain_Linux_x86_64.cmake file, which doesn't exists.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
In Math.max case: if we already found an infinity value update the result
only when the previous value was a negative infinity.
In Math.min case: if we already found an infinity value update the result
only when the previous value was a positive infinity.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Before allocating buffer for the string first
we check that the length of it is greater then 0.
If not then the result is a NaN.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
When using the -std=c99 the gcc does not defines the i386 macro
just the __i386 and __ i386 __.
Fixes issue #355
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
For the Function constructor it is possible to pass the
name of the function arguments in one or more strings, and
each argument name should be separated with a comma.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Previously the index was incremented even if an internal property
or a non enumerable property was found.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Minor code rework as the ecma_op_object_define_own_property
call returns a 'true' simple value on success.
JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan [email protected]
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Removed the internal assert implementation from the engine
and provide externally an assert function via api calls.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The old script behaved incorrectly as it replaced all '*' occurrences
with the list of files in the given directory.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The __FUNCTION__ is not part of the C99/C++11 standard.
So replace all occurrences with the standard __func__.
Side note: GCC 5.1 warns when using -Wpedantic -std=c99
and __FUNCTION__.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
List of improvements:
- Get the [[Enumerable]] and [[Configurable]] attributes before removing a property.
- Directly check the type of the property in asserts.
Related issues: #115 and #132
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
The ecma_op_general_object_get_own_property call does not find all
properties, we need to use the ecma_op_object_get_own_property method
for correct property lookup.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
Using the find program with an argument "*" could lead to problems.
If there are ".js" files in the executing directory then the
shell replaces the asterisk with that filenames.
The fix is simple: quote the argument which has the asterisk.
JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]