Implementation of general objects' [[GetOwnProperty]], [[GetProperty]], [[CanPut]], [[HasProperty]], [[Delete]]; partial implementation of general objects' [[Get]], [[Put]], [[DefineOwnProperty]].

This commit is contained in:
Ruben Ayrapetyan
2014-07-29 14:32:01 +04:00
parent 5aaa853b9f
commit 299c94ee85
8 changed files with 681 additions and 193 deletions
+48 -44
View File
@@ -188,50 +188,6 @@ typedef enum
ECMA_PROPERTY_CONFIGURABLE /**< property's 'Configurable' attribute is true */
} ecma_property_configurable_value_t;
/**
* Description of ECMA property descriptor
*
* See also: ECMA-262 v5, 8.10.
*/
typedef struct
{
/** Is [[Value]] defined? */
unsigned int is_value_defined : 1;
/** Is [[Get]] defined? */
unsigned int is_get_defined : 1;
/** Is [[Set]] defined? */
unsigned int is_set_defined : 1;
/** Is [[Writable]] defined? */
unsigned int is_writable_defined : 1;
/** Is [[Enumerable]] defined? */
unsigned int is_enumerable_defined : 1;
/** Is [[Configurable]] defined? */
unsigned int is_configurable_defined : 1;
/** [[Value]] */
ecma_value_t value;
/** [[Get]] */
ecma_value_t get;
/** [[Set]] */
ecma_value_t set;
/** [[Writable]] */
ecma_property_writable_value_t writable;
/** [[Enumerable]] */
ecma_property_enumerable_value_t enumerable;
/** [[Configurable]] */
ecma_property_configurable_value_t configurable;
} ecma_property_descriptor_t;
/**
* Description of ecma-property
*/
@@ -393,6 +349,54 @@ typedef struct ecma_object_t {
ecma_gc_info_t GCInfo;
} __packed ecma_object_t;
/**
* Description of ECMA property descriptor
*
* See also: ECMA-262 v5, 8.10.
*
* Note:
* If a component of descriptor is undefined then corresponding
* field should contain it's default value.
*/
typedef struct
{
/** Is [[Value]] defined? */
unsigned int is_value_defined : 1;
/** Is [[Get]] defined? */
unsigned int is_get_defined : 1;
/** Is [[Set]] defined? */
unsigned int is_set_defined : 1;
/** Is [[Writable]] defined? */
unsigned int is_writable_defined : 1;
/** Is [[Enumerable]] defined? */
unsigned int is_enumerable_defined : 1;
/** Is [[Configurable]] defined? */
unsigned int is_configurable_defined : 1;
/** [[Value]] */
ecma_value_t value;
/** [[Get]] */
ecma_object_t* get_p;
/** [[Set]] */
ecma_object_t* set_p;
/** [[Writable]] */
ecma_property_writable_value_t writable;
/** [[Enumerable]] */
ecma_property_enumerable_value_t enumerable;
/** [[Configurable]] */
ecma_property_configurable_value_t configurable;
} ecma_property_descriptor_t;
/**
* Description of an ecma-character
*/