Ruben Ayrapetyan
eb80e817d8
Removing trailing whitespace in src/libcoreint/opcodes.c.
2014-12-15 23:08:34 +03:00
Ilmir Usmanov
7e7bdc2aac
Rework literal indexes hash table to simple array in order to improve performance
2014-12-15 22:56:22 +03:00
Ilmir Usmanov
864bd3de06
Fix comment.
2014-12-15 22:47:41 +03:00
Ilmir Usmanov
ddac13f944
Fix parsing of empty file
2014-12-15 17:10:04 +03:00
Ilmir Usmanov
c1ebb8db50
Fix expression statement parsing in case of statement starts with keyword
2014-12-12 16:36:18 +03:00
Ilmir Usmanov
6aee69d6df
Fix native_call opcode dumping
2014-12-12 16:34:59 +03:00
Ilmir Usmanov
4b7871bdde
Fix 'op=' assignment bytecode dumping in case of arrays
2014-12-10 19:20:33 +03:00
Ilmir Usmanov
dc8ab27900
Split parser into parser itself, opcodes dumper and syntax errors checker.
...
Add internal hash map of literal indexes:
In this hash map key is pair of block number and literal's unique identifier in the block, and the value is a literal index that unique in the whole program.
Block is a continues array of opcodes. So, bytecode is splitted into blocks.
Each block has its own uid counter. To get literal index the interpreter looks up it in the hash map.
Thus, now JS program is able to have more than 255 identifiers/string literals.
The first 128 (0-127) uids are reserved for block's uid counter, the other 128 (128-255) are reserved for tmp variables.
2014-12-10 18:31:59 +03:00
Ilmir Usmanov
fc9e83d290
Remove obsolete unit tests.
2014-12-10 18:29:43 +03:00
Ilmir Usmanov
a251bf5d6f
Add array list structure.
...
Change hash table to use array lists instead of linked lists.
2014-12-10 18:27:36 +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