Introducing internal properties. (#2485)

Native handle and pointer are moved to internal properties.

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2018-09-04 15:43:35 +02:00
committed by Robert Sipka
parent 30b7a72344
commit 0a40f55e5f
8 changed files with 46 additions and 62 deletions
+11 -14
View File
@@ -326,10 +326,11 @@ typedef enum
*/
typedef enum
{
ECMA_PROPERTY_TYPE_SPECIAL, /**< internal property */
ECMA_PROPERTY_TYPE_SPECIAL, /**< special purpose property (deleted / hashmap) */
ECMA_PROPERTY_TYPE_NAMEDDATA, /**< property is named data */
ECMA_PROPERTY_TYPE_NAMEDACCESSOR, /**< property is named accessor */
ECMA_PROPERTY_TYPE_VIRTUAL, /**< property is virtual */
ECMA_PROPERTY_TYPE_INTERNAL, /**< internal property with custom data field */
ECMA_PROPERTY_TYPE_VIRTUAL = ECMA_PROPERTY_TYPE_INTERNAL, /**< property is virtual data property */
ECMA_PROPERTY_TYPE__MAX = ECMA_PROPERTY_TYPE_VIRTUAL, /**< highest value for property types. */
} ecma_property_types_t;
@@ -390,6 +391,12 @@ typedef enum
*/
#define ECMA_PROPERTY_NAME_TYPE_SHIFT (ECMA_PROPERTY_FLAG_SHIFT + 4)
/**
* Convert data property to internal property.
*/
#define ECMA_CONVERT_DATA_PROPERTY_TO_INTERNAL_PROPERTY(property_p) \
*(property_p) = (uint8_t) (*(property_p) + (ECMA_PROPERTY_TYPE_INTERNAL - ECMA_PROPERTY_TYPE_NAMEDDATA))
/**
* Special property identifiers.
*/
@@ -401,7 +408,7 @@ typedef enum
ECMA_SPECIAL_PROPERTY_DELETED, /**< deleted property */
ECMA_SPECIAL_PROPERTY__COUNT /**< Number of special property types */
} ecma_internal_property_id_t;
} ecma_special_property_id_t;
/**
* Define special property type.
@@ -419,15 +426,6 @@ typedef enum
*/
#define ECMA_PROPERTY_TYPE_HASHMAP ECMA_SPECIAL_PROPERTY_VALUE (ECMA_SPECIAL_PROPERTY_HASHMAP)
/**
* Name constant of a deleted property.
*/
#ifdef JERRY_CPOINTER_32_BIT
#define ECMA_PROPERTY_DELETED_NAME 0xffffffffu
#else /* !JERRY_CPOINTER_32_BIT */
#define ECMA_PROPERTY_DELETED_NAME 0xffffu
#endif /* JERRY_CPOINTER_32_BIT */
/**
* Type of property not found.
*/
@@ -530,8 +528,7 @@ typedef struct
* Returns true if the property pointer is a property pair.
*/
#define ECMA_PROPERTY_IS_PROPERTY_PAIR(property_header_p) \
(ECMA_PROPERTY_GET_TYPE ((property_header_p)->types[0]) != ECMA_PROPERTY_TYPE_VIRTUAL \
&& (property_header_p)->types[0] != ECMA_PROPERTY_TYPE_HASHMAP)
((property_header_p)->types[0] != ECMA_PROPERTY_TYPE_HASHMAP)
/**
* Returns true if the property is named property.