Ruben Ayrapetyan
a1f95048ae
Removing label completion values.
2015-01-30 23:00:42 +03:00
Ruben Ayrapetyan
00afd4e0e2
Converting ecma_value_t to class that is used for on-stack storage of ecma-values.
...
Original ecma_value_t is renamed to ecma_value_packed_t and is used for on-heap storage.
Copy and move constructors, move assignment operator of ecma_value_t are not created.
New ecma-value return convention is introduced: ecma-values are now returned through ecma_value_t &ret_val argument.
2015-01-30 22:53:06 +03:00
Ruben Ayrapetyan
f231b9a0d2
Moving ecma_reference_t declaration to ecma-reference.h.
2015-01-27 17:18:53 +03:00
Ruben Ayrapetyan
005b5370fc
Switching to g++ and corresponding changes according to C++ requirements.
2015-01-16 17:27:02 +03:00
Ruben Ayrapetyan
42c44830ce
Removing trailing whitespace from sources.
2014-12-19 14:35:17 +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
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
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
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
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
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
76ed780895
Introducing cache for property by name lookup (LCache).
2014-11-17 18:52:48 +03:00
Ruben Ayrapetyan
83c8007437
Compacting ecma_reference_t.
2014-11-12 21:35:21 +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
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
26012e098f
Moving magic strings definitions to ecma-magic-strings.inc.h.
2014-10-28 16:30:42 +03:00
Ruben Ayrapetyan
e4629cca51
Improving precision of number to zt-string conversion, adding search for the shortest representation of number during the conversion.
2014-10-24 19:15:31 +04:00
Ruben Ayrapetyan
feedb37b20
Replacing way to specify ecma-char encoding and ecma-number type: instead of defining it like CONFIG_ECMA_NUMBER_FLOAT32 now it should be defined like CONFIG_ECMA_NUMBER_TYPE=CONFIG_ECMA_NUMBER_FLOAT32.
2014-10-23 18:33:10 +04:00
Ruben Ayrapetyan
7f4a70ccb5
Improving precision of zt-string to ecma-number conversion.
2014-10-23 15:46:42 +04:00
Ruben Ayrapetyan
42abd7d63a
Moving ecma-number mathematical constants to src/libecmaobjects/ecma-globals.h.
2014-10-20 20:48:36 +04:00
Ruben Ayrapetyan
512d816568
Fixing Number.MIN_VALUE and Number.MAX_VALUE values for CONFIG_ECMA_NUMBER_FLOAT64 mode.
2014-10-20 17:31:41 +04:00
Ruben Ayrapetyan
ed960b78db
Introducing CompactProfileError built-in object.
2014-10-16 19:49:47 +04:00
Ruben Ayrapetyan
c231893b28
Implementation of Number built-in object and partial implementation of Number.prototype built-in object.
...
Fixing [[Prototype]] and [[Class]] properties of Array and String built-in objects.
2014-10-16 13:25:47 +04:00
Ruben Ayrapetyan
e8d728f8ce
Fixing typeof for boolean arguments.
2014-10-15 18:02:10 +04:00
Ruben Ayrapetyan
bef5289cb6
Adding stubs for Function and Function.prototype built-ins.
2014-09-26 19:26:17 +04:00
Ruben Ayrapetyan
2d332bc98b
Implementing 'Object.prototype.toString' and 'Object.prototype.valueOf' built-ins.
2014-09-26 18:50:46 +04:00
Ruben Ayrapetyan
a0a2ec2cea
Replacing items of ecma_object_class_t with corresponding ecma magic strings.
2014-09-26 18:04:42 +04:00
Ruben Ayrapetyan
caa2663b28
Adding magic strings for property names of built-in prototype objects.
2014-09-25 19:23:22 +04:00
Ruben Ayrapetyan
c235021147
Implementing [[DefaultValue]] general objects' method.
2014-09-25 18:37:38 +04:00
Ruben Ayrapetyan
4c5c48eef2
Magic strings for Array built-in.
2014-09-25 14:18:07 +04:00
Ruben Ayrapetyan
c4ec42635b
Implementing String's constructor and [[GetOwnProperty]].
2014-09-24 21:31:24 +04:00
Ruben Ayrapetyan
44a2f7ba39
Implementing Math.log built-in.
2014-09-24 17:10:42 +04:00
Ruben Ayrapetyan
9b69ea4d6d
Implementing Math.sqrt.
2014-09-23 21:56:44 +04:00
Ruben Ayrapetyan
5f9a068a61
Adding magic strings for the Math object's properties names.
2014-09-22 21:34:11 +04:00
Ruben Ayrapetyan
1e642fd527
Implementing ToPropertyDescriptor and FromPropertyDescriptor ECMA operations.
2014-09-22 19:31:35 +04:00
Ruben Ayrapetyan
d7314a7300
Adding stubs for the Object object.
2014-09-22 15:56:50 +04:00
Ruben Ayrapetyan
f46853bdd8
Introducing interfaces for invoking built-in functions and constructors.
...
Implementing property instantiation routine dispatcher for Global object.
Adding instantiation for 'undefined', 'NaN', 'Infinity' and built-in routine
properties of the Global Object. Implementing isNaN and isFinite built-in routines.
2014-09-19 18:10:49 +04:00
Ruben Ayrapetyan
1dd631178f
Renaming ecma_get_object_has_non_instantiated_builtins -> ecma_get_object_is_builtin, ecma_set_object_has_non_instantiated_builtins -> ecma_set_object_is_builtin.
2014-09-19 17:51:40 +04:00
Ruben Ayrapetyan
d44b13e0cd
Adding magic strings for the Global object's properties names.
2014-09-19 17:45:52 +04:00
Ruben Ayrapetyan
7fc3b178d8
Introducing ecma_is_string_magic, ecma_init and ecma_finalize interfaces, 'magic-string' container type for ecma-strings. Renaming ecma_is_magic_string to ecma_is_zt_string_magic. Moving magic-string related routines to ecma-helpers-string.c.
2014-09-19 12:08:19 +04:00
Ruben Ayrapetyan
9a667596de
Implementing constructor of Function object for built-in routines.
2014-09-18 19:48:43 +04:00
Ruben Ayrapetyan
2edc921be7
Introducing has_non_instantiated_built_in_properties flag in ecma_object_t and 'built-in function' object type.
2014-09-17 20:05:15 +04:00
Ruben Ayrapetyan
dafbaa742e
Adding configuration option for ECMA exception support.
2014-09-08 19:09:34 +04:00
Ruben Ayrapetyan
31b5451b50
Moving label descriptor from ecma_completion_value_t to separate structure on heap (fixing performance degradation that occured in commit 5d92544db57203603a6ed53b5c18562065a70b77).
2014-09-04 14:27:40 +04:00
Ruben Ayrapetyan
813831a23b
Decimal conversion of Number to zt-string (still not precise enough). Zt-string copy and length calculation helpers.
2014-09-01 21:12:02 +04:00
Ruben Ayrapetyan
23b62bce54
Replacing doxygen header for ECMA modules 'addtogroup ecma ---TODO---' -> 'addtogroup ecma ECMA'.
2014-08-29 18:35:44 +04:00
Ruben Ayrapetyan
1d02085dc6
Packing ecma_object_t to 8 bytes.
2014-08-29 17:38:05 +04:00