Commit Graph
29 Commits
Author SHA1 Message Date
Akos Kiss 3608f8df86 Refactoring and fixing jerry-libc
Refactor memory and string handling routines
* Potential code size improvements:
  * Most loops don't really need a new incrementing index variable
    running between 0..n-1 but can just loop `while (n--)`, and the
    bodies don't need array indexing but can just use the `*p++`
    idiom.
  * Compare routines are not required to return -1, 0, and +1, but
    any negative, zero, or positive result will do.
  * `strncmp` may follow the other routines and does not have to have
    defined behaviour if any of its args is NULL.
* Fix:
  * `strncmp` did not work correctly if the strings were equal but
    `n` was greater than their length (did not stop at the
    terminating zero character).

Refactor printf
* Merging code duplications, removing dead initialization.

Refactor rand and srand
* Making sure that the type of the state variables is OK
  (`uint32_t` instead of `unsigned int`).
* Getting type conversions OK.
* Fixing `srand` to write all state variables and thus indeed
  generate the same random sequence.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-18 15:40:56 +01:00
Akos Kiss c25d8617a5 Add Travis CI badge to readme
JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-17 13:48:11 +01:00
Akos Kiss 85365dacfe Quick fix for Travis CI: remove signed-off check
Pull requests creating merge commits don't work well with
tools/check-signed-off.sh.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-17 12:59:32 +01:00
Akos Kiss ad6107b32b Turn some global variables static const
Generally, it helps the optimizing passes of the compiler if global
varibles are `static`, and it is good for RAM usage to have data
marked read-only `const`. Found some globals, which could benefit
from these qualifiers.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-17 10:55:09 +01:00
Akos Kiss b2f3ec225e Get the alpha order of lexer keywords right
Two keywords violate the ordering. Should someone depend on the
alpha order in the future (because the `keyword_length_*` arrays
seem to be ordered)` then this issue will be a nightmare to debug.
Better get this right now.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-17 10:38:47 +01:00
Akos Kiss b18591eb25 Add support for travis integration
Fully fledged checks, builds, and tests on Linux, non-voting native
builds and unit tests on OS X.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-17 10:10:45 +01:00
Akos Kiss 0d7ea70b41 Eliminating doxygen warnings by fixing the documentation
* Fix "end of file while inside a group" doxygen warnings.

* Fix "unknown command" doxygen warnings caused by incorrect
  argument references. Instead of `@foo`, `@a foo` is the proper
  format.

* Fix "unknown command" doxygen warnings caused by incorrect
  parameter direction specifications. Instead of `@in`, `@out`,
  and `@in-out`, `[in]`, `[out]`, and `[in,out]` are the proper
  formats.

* Wrapping special characters in quotes to avoid doxygen
  confusion. Raw pipe, semicolon, dot, backslash, etc. characters
  can drive doxygen into various misinterpretations and warnings.
  E.g.:
  ```
  End of list marker found without any preceding list items
  Found unknown command
  ```
  Putting quotes around such text snipets eliminates the errors.

* Fix the documentation of `ecma_builtin_global_object_print`. Raw
  <> and \ sequences confused doxygen in various ways (it tried to
  interpret them as XML tags and doxygen commands).

* Fix "ignoring title that does not match old title" doxygen
  warnings. At some places, the group titles were out of sync, at
  others, the group names were incorrect.

* Fix "parameters are not documented" doxygen warnings. Fixing
  various typos in the inline parameter documentations (`/*`,
  `/**`, `/** <`, and `/**>` are all considered incorrect, the
  right format is `/**<`).

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-16 21:05:58 +01:00
Akos Kiss 7dc065842b Remove jerry_port_ functions from test-common.h
They are identical to the functions with the same name in
jerry-port.cpp and cause duplicate symbol link errors on OS X.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-16 10:39:21 +01:00
Akos Kiss 7f3a10a29d Move Doxyfile to the root directory of the project
Config files are better located in the root of the project tree,
no questions will raise then what the relative paths are relative
to. (E.g., `INPUT` and `OUTPUT_DIRECTORY` in the current case.)

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-16 01:28:35 +01:00
Akos Kiss f959ba95a4 Refactoring the build system
* Removed unused or unnecessary parts from various make files
* Eliminated lots of duplications from Makefile with the help of
  macros.
* Split tools/precommit.sh to its independent components:
  * the part that checks the existence of the "signed off" text in
    commit messages
    (this on got factored out to tools/check-signed-off.sh),
  * the part that uses vera++ for style checking (this one got
    factored out to tools/check-vera.sh),
  * the part that invokes targets in the cmake-generated build
    directory, and
  * the part that performs various tests (these latter two got
    moved into the Makefile).
* Moved the functionality of precommit-full-testing.sh into the
  Makefile, too.
* Added ninja build system support (e.g., `make NINJA=1`).
* Updated leading documentation comments (they were somewhat
  stale).
* Tried to keep the target names exactly the same as they were --
  almost succeeded... (some changes are intentional, and are
  subject to personal preferences).
* Simplified console output of `make precommit`
* Unified test runner scripts and their output format
  * Eliminated nothing-to-stdout everything-to-log-file policy:
    info is printed to stdout and it is the caller's
    responsibility to redirect it to a file if needed.
  * Also applied some renaming and coding style unification to
    the scripts.
* Merged the functionality of tools/runners/run-test-suite-jerry*.sh
  into the Makefile
* Merged everything related to a test suite execution in a single
  script.
  * The new script also allows to specify pass and xfail tests in
    a single list file, which was not possible hitherto.
  * Also, the paths of the test cases given in a file are
    interpreted relative to their container files.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-15 18:05:01 +01:00
Akos Kiss 20bec3d73f Remove cppcheck and vera++ from prerequisites
Rely on platform-provided versions. Thus, no need to download and
build them, neither to wrap them with shell scripts. CMake and
precommit updated to call the new tools. Development documentation
also updated/simplified.

PS: On my Ubuntu 14.04.3, cppcheck has version 1.61, while prereq
version was 1.69. The older version reports and fails on a strange
style issue in ecma/builtin-objects/ecma-builtin-helpers.cpp, for
which the only solution found was to suppress the cppcheck errors
with `variableScope` id for that file.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-11 09:58:41 +01:00
Akos Kiss dc84775207 Remove references to non-existent parser/js/bc and parser/js/collections directories
With the merge of the CBC parser, these directories got removed.
The update of the jerry-core/CMakeLists.txt must have been
forgotten, probably because the kept references caused no errors.
Cleaning up now.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-11 09:29:40 +01:00
Akos Kiss 0a83b317c7 Rename docs/Doxygen to docs/Doxyfile
This is a really minuscule change, but it is more idiomatic to name
the config file of doxygen as Doxyfile.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-11 09:13:01 +01:00
Akos Kiss 196e8196fc Eliminate code duplication in memory statistics printing
JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-09 14:19:28 +01:00
Akos Kiss 9c124e2634 Revive mem_stats.sh
The tool became bitrotten. Bringing it up-to-date to handle the
output of jerry and rss-measure.sh properly.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-09 14:03:16 +01:00
Akos Kiss 4a5a8cbf72 Add generated documentation to gitignore
JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2016-02-09 13:42:01 +01:00
Akos Kiss ab68d093e8 Whitespace cleanup: tab removal in tests directory
Also changed space-based indentation in touched files if they used
4 spaces for indentation (instead of the most-often-used 2).

Also added new line to end of touched files if they did not end
that way.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-11-28 21:47:37 +01:00
Akos Kiss 133fc6adfd Whitespace cleanup: tab removal in tools directory
JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-11-28 21:47:37 +01:00
Akos Kiss 5ffc9abb59 Whitespace cleanup: tab removal in CMakeLists.txt
JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-11-28 21:47:37 +01:00
Akos Kiss 8006635636 Pass -Wno-error to linker in case of LTO builds
When linking a release-built command line shell on Linux against
default glibc with LTO enabled, a long-open gcc bug causes spurious
warning to be emitted around a call to fread. The `-Werror` flag
turns this into an error and the build process fails.
Unfortunately, there is no way to selectively disable the warning
with pragmas or `-Wno-error=xxx` flags.

Thus, this patch introduces some helper macros and lists all
warnings explicitly with `-Werror=xxx` instead of covering all
warnings with the `-Werror` flag. This way, warnings enabled by
command line flags do cause errors, but those raised by warning
attributes (which cannot be suppressed by any `-Wno-error=xxx`
flags) don't.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-11-17 22:20:23 +01:00
Akos Kiss 7022aa26b0 Add a "Hello JerryScript!" program to the tests
The current code base does not contain any "first JavaScript
program" for those who build JerryScript for Linux console. It
does contain a LED-blinking example -- blinky.js -- but that's
only useful on an developer board where LEDs-to-be-blinked are
available. And the rest of the tests are just that: tests, giving
passed/failed information but nothing eye candy.

This patch adds a simple JS script that can act as a warm welcome
to anyone after the first successful build trying to run something
proving that Jerry works.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-11-11 11:32:08 +00:00
Akos Kiss 6038173e76 Rename make target build_all to $(BUILD_ALL)
The current `Makefile` works "as is" since `$(BUILD_ALL)` is
`build_all`. However, the target `build` depends on `$(BUILD_ALL)`,
so should that variable ever be changed, it will break.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-07-16 23:39:49 +02:00
Akos Kiss 8d9658913b Get all phony targets declared
It is generally a good practice to have the `.PHONY` declarations
close to the affected targets themselves (instead of declaring them
phony in one group at the end of the `Makefile`) so as not to miss
any. (As it already happened to the `log`, `precommit`,
`build_all`, etc., targets.) Thus, removed the one big declaration
from the end of the file and prepended all phony targets with a
declaration separately.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-07-16 23:39:48 +02:00
Akos Kiss f8ee565016 Split independent commands in make recipes
Mostly, there is no need for joining commands with `&&` in recipes
since make already applies the exit-on-error functionality to each
executed line, unless there is a shell interdependency between them
(like setting environment variables in one command and using it in
another, or changing the working directory, which would not work
because of the new-subshell-per-line behaviour of make). Thus, some
independent commands can be split in the `Makefile` to improve
readability.

(Some space/tab inconsistensies are also fixed.)

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-07-16 23:39:48 +02:00
Akos Kiss 1a4e66a013 Extend non-quiet make mode with log echo
If `VERBOSE` is defined, cmake, sub-make, and tool logs are also
echoed on stdout. Default behaviour is still quiet mode, however.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-07-16 23:39:48 +02:00
Akos Kiss f4c24f063d Enable non-quiet make
Replace most of echo-suppressing `@`s with `$(Q)`. `$(Q)` defaults
to `@` to preserve current behaviour, however, should anyone need
or prefer echoed lines, defining `VERBOSE` on the command line for
make makes it possible.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-07-16 23:39:48 +02:00
Akos Kiss 9d423d9901 Make exit behaviour of jerry_fatal flag-dependent
* Added new flag `JERRY_FLAG_ABORT_ON_FAIL`.
* Added new internal api function `jerry_is_abort_on_fail` to
  check the status of the flag.
* Changed `jerry_fatal` bail-out function to call `abort` when the
  flag is set and exit code is non-zero (i.e., not only for
  assertion failures).
* Added `--abort-on-fail` command line option to linux and nuttx
  apps to set the flag.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-06-03 17:09:51 +02:00
Akos Kiss 6a607751bf Terminate with signal in case of an assert
Automated debugging is easier if the process terminates with a
signal instead of a regular `exit (code);` call, since in this
latter case the cause of error cannot be automatically backtraced.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-06-03 12:07:55 +02:00
Akos Kiss d6fb76416a Add abort () to jerry-libc
Added declaration and implementations of `void abort (void)` to
jerry-libc. As the linux implementation relies on the `getpid`
syscall - which has no arguments - `syscall_0` implementations
have been added as well.

`libc_fatal` has been adapted to use the new `abort` function
instead of `exit`. This also made the definition of
`LIBC_FATAL_ERROR_EXIT_CODE` unnecessary.

Finally, the syscall fatal error message was fixed.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss [email protected]
2015-06-02 18:12:29 +02:00