Ruben Ayrapetyan
001f262590
Limiting maximum command line arguments by CONFIG_JERRY_MAX_COMMAND_LINE_ARGS configuration option.
2014-12-17 21:29:17 +03:00
Ruben Ayrapetyan
dd3271e35d
Changing uint8_t* to void* in arguments and return values of mem_heap_alloc_block, mem_heap_free_block and mem_heap_try_resize_block operations.
2014-12-17 21:27:02 +03:00
Ruben Ayrapetyan
8349ad8ecf
Inter-commit performance comparison script.
2014-12-17 19:16:16 +03:00
Ruben Ayrapetyan
d836dc32af
Introducing ECMA_OP_TO_NUMBER_TRY_CATCH and ECMA_OP_TO_NUMBER_FINALIZE macroses.
...
- the ECMA_OP_TO_NUMBER_TRY_CATCH macro gets number from given value,
converting the value to number if it's type is different,
and catching possible conversion exceptions;
- using the macroses instead of ecma_op_to_number to reduce allocator invocations
in several routines with arguments that are likely to be numbers.
2014-12-15 23:08:34 +03:00
Ruben Ayrapetyan
386a530d4d
Upon assignment of a number to a register variable reusing the variable's space if it already contains a number.
2014-12-15 23:08:34 +03:00
Ruben Ayrapetyan
eb80e817d8
Removing trailing whitespace in src/libcoreint/opcodes.c.
2014-12-15 23:08:34 +03:00
Ruben Ayrapetyan
2c86712e21
Introducing number chunk for storage of temporary (stack-only) number operands.
2014-12-09 18:24:16 +03:00
Ruben Ayrapetyan
1182f7bbfe
Removing JERRY_UNREACHABLE from lexical environment related routines.
2014-12-05 13:25:41 +03:00
Ruben Ayrapetyan
5bb90fb8ca
Initializing object / lexical environment descriptors with zeroes before field initialization.
2014-12-05 13:24:39 +03:00
Ruben Ayrapetyan
ee7ac6602b
Fixing insertion to lookup cache: removing possibility of invalidation of entry during it's initialization, skipping empty entries during search for entry containing specified property.
2014-12-04 17:03:14 +03:00
Ruben Ayrapetyan
2b9b729c37
Invoking jerry_exit (ERR_OUT_OF_MEMORY) instead of JERRY_UNREACHABLE in in ecma_alloc_*.
2014-12-04 15:10:39 +03:00
Ruben Ayrapetyan
f7f0681698
Invoking tools/perf.sh in tools/run_benchmarks.sh.
2014-12-04 12:52:55 +03:00
Ruben Ayrapetyan
3b1c6b5c37
Fixing an issue in garbage collection module: correctly updating 'may reference younger objects' flag.
2014-12-04 12:38:06 +03:00
Ruben Ayrapetyan
d2f6b36cf7
Implementing Math.sin and Math.cos built-in routines.
2014-12-04 11:39:23 +03:00
Ruben Ayrapetyan
557a4b6460
Removing ecma_op_object_has_property and ecma_op_general_object_has_property routines.
2014-12-03 22:48:37 +03:00
Ruben Ayrapetyan
90fccc04ba
Passing property descriptors by const ref instead of by value.
2014-12-03 21:57:11 +03:00
Ruben Ayrapetyan
b7daa16b99
Implementing number comparisons through simple comparison operators, checking under !JERRY_NDEBUG that behaviour is equivalent to ECMA-defined comparisons.
2014-12-03 20:22:29 +03:00
Ruben Ayrapetyan
8998860c7b
Extract non-inlineable long path from ecma_op_object_get_own_property.
2014-12-03 19:25:16 +03:00
Ruben Ayrapetyan
98a11c13d5
Padding ecma_lcache_entry_t to 8 bytes size.
2014-12-03 19:25:01 +03:00
Ruben Ayrapetyan
e955d8f742
Assigning numbers to named data properties' values without reallocating pool chunk if the value already contains a number.
2014-12-03 16:03:13 +03:00
Ruben Ayrapetyan
3190089818
Introducing getter and setter for named data property's value field, ecma_named_data_property_assign_value interface; using boolean flags for 'Writable', 'Enumerable' and 'Configurable' attributes values while passing them in routine arguments.
2014-12-03 15:45:58 +03:00
Ruben Ayrapetyan
668eef73c8
Implementing system call sequences in plain assembler routines; removing -fomit-frame-pointer for non-optimized builds.
2014-12-02 15:42:09 +03:00
Ruben Ayrapetyan
ef012d9cd4
Adding lcache lookup and insert to ecma_find_named_property; removing lcache insert from ecma_op_object_get_own_property.
2014-11-28 21:27:52 +03:00
Ruben Ayrapetyan
3b29280b79
Using hash value stored in ecma-string for lcache search; comparing string faster but with possible false negatives while performing lcache lookup.
2014-11-28 21:27:48 +03:00
Ruben Ayrapetyan
fe7e34d93e
Adding ecma-string's hash to ecma_string_t.
2014-11-28 21:12:44 +03:00
Ruben Ayrapetyan
6c65c48772
Removing 'length' field from ecma-string descriptor (calculating length upon request).
2014-11-28 16:26:22 +03:00
Ruben Ayrapetyan
7b75dcf0c9
Removing assertion checks with possible side effects.
2014-11-27 21:04:14 +03:00
Ruben Ayrapetyan
f6e7621d3f
Adding __always_inline attribute to some value handling helpers.
2014-11-27 19:40:14 +03:00
Ruben Ayrapetyan
1f3d96cffa
Representing ecma_completion_value_t as integer instead of structure with bit-fields, adding corresponding field accessors; adding __attribute_const__ to some value handling helpers.
2014-11-27 18:20:12 +03:00
Ruben Ayrapetyan
0d870a1e74
Representing ecma_value_t as integer instead of structure with bit-fields, adding corresponding field accessors.
2014-11-27 17:34:03 +03:00
Ruben Ayrapetyan
815309c7e9
Introducing ecma_get_[type]_from_value, ecma_get_[type]_from_completion_value and ecma_get_completion_value_value interfaces.
2014-11-27 14:19:53 +03:00
Ruben Ayrapetyan
22e1941050
Moving pools that received request on allocation / free to beginning of pools' list; extracting long path from mem_pools_alloc.
2014-11-26 20:22:44 +03:00
Ruben Ayrapetyan
c21e186f2c
Static definition of pool's area size and number of chunks in a pool; alignment of mem_block_header_t and mem_pool_state_t to MEM_ALIGNMENT.
2014-11-26 19:23:26 +03:00
Ruben Ayrapetyan
9a0081b856
Splitting free block from end if block search direction is backward (currently, for short-term blocks).
2014-11-24 18:52:47 +03:00
Ruben Ayrapetyan
5b8077b976
Storing provideThis flag and pointer to binding object immediately in descriptor of object-bound lexical environment.
2014-11-21 20:37:04 +03:00
Ruben Ayrapetyan
958126f5c8
Adding debug assertion about incoming state of formal parameters collection to ecma_create_arguments_object.
2014-11-21 17:08:40 +03:00
Ruben Ayrapetyan
103e1b1c8a
Running cppcheck only for sources affected by local changes.
2014-11-21 16:28:52 +03:00
Ruben Ayrapetyan
036521627e
Introducing "on-stack" ecma-string descriptors and using them in get_variable_value / set_variable_value.
2014-11-21 13:06:30 +03:00
Ruben Ayrapetyan
14ab1b3355
Removing construction of ecma_reference_t in get_variable_value and set_variable_value.
2014-11-20 22:09:14 +03:00
Ruben Ayrapetyan
f5ffae0fec
Removing runtime checks for reading / writing 'arguments' variable in CompactProfile mode (the checks should be performed during parsing).
2014-11-20 18:24:31 +03:00
Ruben Ayrapetyan
d7764dfc6e
Implementation of ecma_make_simple_value and ecma_make_completion_value through bitwise operations (instead of through bit-fields).
2014-11-20 15:34:46 +03:00
Ruben Ayrapetyan
76aab95aac
Implementation of ecma_is_value_* for simple values through comparison with integer constants (instead of bit-fields).
2014-11-20 15:33:27 +03:00
Ruben Ayrapetyan
6dd357a554
Using ecma_is_value_* instead of switches for determining of ecma-value's type.
2014-11-20 15:33:04 +03:00
Ruben Ayrapetyan
7b3eaf146b
Introducing ecma_is_value_{number,string,object} for checking type of ecma-value.
2014-11-20 14:21:33 +03:00
Ruben Ayrapetyan
30ff59fca3
Reverting c2933d9e44eb5346161964c7c52f1ca793c4c7b4 changes of ecma_number_{is,make}_infinity routines.
2014-11-19 17:55:15 +03:00
Ruben Ayrapetyan
27827e607c
Reducing cases in which full static source analysis is performed.
...
- starting vera++ only on changed sources;
- starting cppcheck only on changed sources, if no header file was changed,
and on all sources, if at least one header file was changed.
2014-11-19 16:54:52 +03:00
Ruben Ayrapetyan
24c9b12ce5
Compacting some ecma_number_* helpers, allowing NaN in argument of ecma_number_negate, using ecma_number_negate instead of immediate unary minus in ecma_number_substract.
2014-11-19 16:11:05 +03:00
Ruben Ayrapetyan
9f7e17e9fd
Removing musl libc usage. Linking to libgcc (for __aeabi_* routines on ARM target).
2014-11-18 21:17:31 +03:00
Ruben Ayrapetyan
988288c9e4
Fixing _start routine for ARM Linux targets (non-musl builds).
2014-11-18 20:12:25 +03:00
Ruben Ayrapetyan
fb6bdd151a
Moving part of ecma_compare_ecma_strings to ecma_compare_ecma_strings_longpath.
2014-11-18 17:28:03 +03:00
Ruben Ayrapetyan
e7f96336f8
Fixing ecma_lcache_init.
2014-11-17 21:26:36 +03:00
Ruben Ayrapetyan
fd155d4699
Fixing calculation of ecma-string's hash in ecma_string_try_hash.
2014-11-17 20:19:38 +03:00
Ruben Ayrapetyan
76ed780895
Introducing cache for property by name lookup (LCache).
2014-11-17 18:52:48 +03:00
Ruben Ayrapetyan
8a6eae0ca5
Reordering comparisons in ecma_compare_ecma_strings to improve performance for frequent cases.
2014-11-17 18:52:38 +03:00
Ruben Ayrapetyan
34430f0831
Passing object to named property free routines.
...
Adding argument, pointing to object that contains the property to be freed, to ecma_free_property, ecma_free_named_data_property and ecma_free_named_accessor_property.
Also, adding static qualifier to ecma_free_named_data_property, ecma_free_named_accessor_property and ecma_free_internal_property.
2014-11-17 17:06:06 +03:00
Ruben Ayrapetyan
7bb6c6bc84
Removing debug_release.* build targets.
2014-11-17 13:52:22 +03:00
Ruben Ayrapetyan
44eca8e207
Fixing JERRY_ASSERT macro for JERRY_NDEBUG build mode.
...
The macro under !JERRY_NDEBUG was evaluting it's argument and called jerry_assert_fail
if the argument was evaluated to false. Under JERRY_NDEBUG the macro still
was evaluating it's argument but jerry_assert_fail wasn't called anyway.
Now macro doesn't evaluate it's argument under JERRY_NDEBUG build.
2014-11-17 12:52:43 +03:00
Ruben Ayrapetyan
857e66fb98
Revert "Calling routine for instantiating built-ins' properties only if property name is a magic string."
...
Reverting commit 1dd7d626967110c3a0f14c40479bc054baf04b3f because of performance degradation on ARM Linux.
The degradation requires further investigation.
2014-11-14 18:04:45 +03:00
Ruben Ayrapetyan
82fe067fc9
Calling routine for instantiating built-ins' properties only if property name is a magic string.
2014-11-14 14:40:36 +03:00
Ruben Ayrapetyan
dd1e9ca3e4
Improving performance of ecma_is_string_magic.
2014-11-14 14:40:30 +03:00
Ruben Ayrapetyan
2e94dc1341
Fixing an issue introduced in commit 4b3385fb920a60c9d7db66f9798355430ca4036a (restoring a check for NULL pointer).
2014-11-13 20:57:11 +03:00
Ruben Ayrapetyan
477a694622
Introducing ECMA_GET_NON_NULL_POINTER macro that is ECMA_GET_POINTER without NULL pointer check.
...
Replacing invocations of ECMA_GET_POINTER passing non-NULL argument with introduced ECMA_GET_NON_NULL_POINTER.
2014-11-13 19:09:13 +03:00
Ruben Ayrapetyan
0e10e97120
Returning bool value instead of simple boolean completion value from ecma_op_has_binding.
2014-11-13 18:08:23 +03:00
Ruben Ayrapetyan
1fae7645af
Splitting ecma_op_get_value and ecma_op_put_value.
...
Splitting each of ecma_op_get_value and ecma_op_put_value to two routines:
- for lexical environment or undefined bases (lex_env_base suffix);
- for object bases (object_base suffix).
2014-11-13 15:45:47 +03:00
Ruben Ayrapetyan
11f0cf9a2d
Performing do_strict_eval_or_arguments_check check only under !JERRY_NDEBUG.
2014-11-13 14:28:45 +03:00
Ruben Ayrapetyan
83c8007437
Compacting ecma_reference_t.
2014-11-12 21:35:21 +03:00
Ruben Ayrapetyan
44ade941b1
Showing STM32F4 binary size notes in tools/log.sh.
2014-11-12 20:42:20 +03:00
Ruben Ayrapetyan
c5cc82d793
Adding mem_stats build modifier.
2014-11-12 15:46:15 +03:00
Ruben Ayrapetyan
804af937d8
Fixing !MEM_STATS build.
2014-11-12 15:41:13 +03:00
Ruben Ayrapetyan
d93a4ec36c
Replacing switches with pointer tables in some ecma_op_object_* routines.
2014-11-12 15:17:20 +03:00
Ruben Ayrapetyan
afe242e7a3
Adding __attribute_pure__ and __attribute_const__ to some routines that operate on bit-fields.
2014-11-11 19:25:49 +03:00
Ruben Ayrapetyan
bd60d1874b
Implementing resize of heap blocks.
...
- adding mem_heap_try_resize_block routine that tries to resize
block using free space that is located right after the resized block;
- placing long-term blocks from start of heap space and short-term - from end
of the space to increase probability of success of resizing just allocated
long-term block;
- adding mem_heap_try_resize_block invocation to 'test_heap' unit test.
2014-11-11 15:44:31 +03:00
Ruben Ayrapetyan
4875762cfc
Showing ARM Linux binary size notes in tools/log.sh.
2014-11-10 18:25:21 +03:00
Ruben Ayrapetyan
7c488ea11a
Fixing tests of internal test suite.
2014-11-06 17:47:36 +03:00
Ruben Ayrapetyan
e33e6a77cb
Adding tests that depend on number precision to tests/jerry-test-suite/precommit_test_list.
2014-10-31 21:29:30 +03:00
Ruben Ayrapetyan
8a5b1148bc
Storing magic string identifier in ecma-string descriptor instead of copying magic string's characters to the descriptor or to the heap.
2014-10-31 21:16:21 +03:00
Ruben Ayrapetyan
4d04cb4658
Removing tests that depend on features, which are unsupported in Compact Profile minimal build, from tests/jerry-test-suite/compact_profile_list list.
2014-10-31 21:05:41 +03:00
Ruben Ayrapetyan
843305fb48
Fixing some assertions in src/libecmaobjects/ecma-helpers-string.c.
2014-10-31 20:51:02 +03:00
Ruben Ayrapetyan
c0a6ae3eff
- Smaller but not precise conversion between strings and numbers under
...
CONFIG_ECMA_NUMBER_TYPE==CONFIG_ECMA_NUMBER_FLOAT32 (float32 mode);
- float64 mode by default if not CompactProfile-mode;
- CompactProfile-mode for MCU builds.
2014-10-31 20:44:27 +03:00
Ruben Ayrapetyan
05cf2dbe04
Providing cp_minimal build mode.
...
In the mode built-in objects except Global, Object, Object.prototype, Function,
Function.prototype, [[ThrowTypeError]] and CompactProfileError are disabled.
Making default builds (without cp cp_minimal modes set) to not define CONFIG_ECMA_COMPACT_PROFILE.
Removing some tests that depend on 'eval'-like functionality or CompactProfileError built-in from pre-commit testing.
2014-10-31 18:37:55 +03:00
Ruben Ayrapetyan
73084cb976
Fixing GetBindingValue operation for immutable bindings.
2014-10-31 16:03:32 +03:00
Ruben Ayrapetyan
5c4d2085a1
Fixing build without CONFIG_ECMA_COMPACT_PROFILE.
2014-10-31 16:02:30 +03:00
Ruben Ayrapetyan
5c4d73f4a3
Fixing Ctrl-C handling in tools/push.sh.
2014-10-30 21:25:48 +03:00
Ruben Ayrapetyan
bc484e2048
Parallel tests run in tools/run_test_suite_test262.sh.
2014-10-30 21:25:48 +03:00
Ruben Ayrapetyan
290f6a7551
Passing file with test at first and sta-jerry.js as second in test262 runner.
...
This is necessary, because 'use strict' directive in test, if any, should appear at beginning of the code.
2014-10-30 21:25:47 +03:00
Ruben Ayrapetyan
b4bd0bfb4c
Correctly setting [[Extensible]] property of built-in objects.
2014-10-30 19:39:54 +03:00
Ruben Ayrapetyan
bd5f4c0c69
Adding test for some limitations that take effect in strict mode.
2014-10-30 18:22:52 +03:00
Ruben Ayrapetyan
bb6583faa7
Fixing do_strict_eval_arguments_check helper.
2014-10-30 17:25:30 +03:00
Ruben Ayrapetyan
ac710dd0b5
Implementing [[ThrowTypeError]] built-in Function object.
2014-10-30 17:22:33 +03:00
Ruben Ayrapetyan
4625d5b90a
Changing value of CompactProfileError built-in's 'length' property to 0.
2014-10-30 17:22:33 +03:00
Ruben Ayrapetyan
90dfee3cdb
Updating tools/run_test_suite_test262.sh to handle tests marked '@negative'.
2014-10-30 16:06:57 +03:00
Ruben Ayrapetyan
4160262ce8
Implementing EvalError, RangeError, SyntaxError, URIError built-ins and corresponding prototype built-in objects.
2014-10-30 14:28:44 +03:00
Ruben Ayrapetyan
66cb7e316d
Implementing ReferenceError and ReferenceError.prototype built-ins.
2014-10-29 21:28:56 +03:00
Ruben Ayrapetyan
6991b26e04
Implementing TypeError and TypeError.prototype built-ins. Fixing Error.prototype.toString implementation.
2014-10-29 21:15:36 +03:00
Ruben Ayrapetyan
4e6f5c7716
Implementing Error and Error.prototype built-in objects.
2014-10-29 18:49:31 +03:00
Ruben Ayrapetyan
ed08fe9983
Full names of magic string identifiers in src/libecmaobjects/ecma-magic-strings.inc.h
2014-10-29 17:23:43 +03:00
Ruben Ayrapetyan
a74c77a1d5
Arrangement of built-in objects implementation (description of built-ins with *.inc.h headers, reducing code duplication).
2014-10-29 15:46:31 +03:00
Ruben Ayrapetyan
6078a4c854
Describing Boolean.prototype with src/libecmabuiltins/ecma-builtin-boolean-prototype.inc.h header.
2014-10-28 20:38:26 +03:00
Ruben Ayrapetyan
f9e809e2e8
Removing ecma_builtin_*_get_routine_parameters_number routines.
2014-10-28 20:12:03 +03:00
Ruben Ayrapetyan
87310e43c6
On-demand built-ins instantiation.
2014-10-28 17:52:07 +03:00