Commit Graph

104 Commits

Author SHA1 Message Date
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