5555 */
5656typedef enum
5757{
58- ECMA_TYPE_SIMPLE , /**< simple value */
59- ECMA_TYPE_NUMBER , /**< 64- bit integer */
58+ ECMA_TYPE_NON_PTR_VALUE , /**< directly encoded value, a 28 bit signed integer or a simple value */
59+ ECMA_TYPE_FLOAT_NUMBER , /**< pointer to a 64 or 32 bit floating point number */
6060 ECMA_TYPE_STRING , /**< pointer to description of a string */
6161 ECMA_TYPE_OBJECT , /**< pointer to description of an object */
6262 ECMA_TYPE___MAX = ECMA_TYPE_OBJECT /** highest value for ecma types */
@@ -68,10 +68,10 @@ typedef enum
6868typedef enum
6969{
7070 /**
71- * Empty value is implementation defined value, used for:
72- * - representing empty value in completion values (see also: ECMA-262 v5, 8.9 Completion specification type);
73- * - values of uninitialized immutable bindings;
74- * - values of empty register variables.
71+ * Empty value is implementation defined value, used for representing :
72+ * - empty (uninitialized) values
73+ * - immutable binding values
74+ * - special register or stack values for vm
7575 */
7676 ECMA_SIMPLE_VALUE_EMPTY ,
7777 ECMA_SIMPLE_VALUE_UNDEFINED , /**< undefined value */
@@ -90,6 +90,13 @@ typedef enum
9090 */
9191typedef uint32_t ecma_value_t ;
9292
93+ /**
94+ * Type for small integer numbers in JerryScript.
95+ *
96+ * The size of ecma_value_integer_t and ecma_value_t must be the same.
97+ */
98+ typedef int32_t ecma_value_integer_t ;
99+
93100#if UINTPTR_MAX <= UINT32_MAX
94101
95102/**
@@ -114,6 +121,26 @@ typedef uint32_t ecma_value_t;
114121 */
115122#define ECMA_VALUE_SHIFT 3
116123
124+ /**
125+ * Flag for simple values
126+ */
127+ #define ECMA_SIMPLE_VALUE_FLAG 0x8u
128+
129+ /**
130+ * Shift for integer value part in ecma_value_t
131+ */
132+ #define ECMA_INTEGER_NUMBER_SHIFT 4
133+
134+ /**
135+ * Maximum integer number for an ecma value
136+ */
137+ #define ECMA_INTEGER_NUMBER_MAX 0x7ffffff
138+
139+ /**
140+ * Minimum integer number for an ecma value
141+ */
142+ #define ECMA_INTEGER_NUMBER_MIN -0x8000000
143+
117144/**
118145 * Internal properties' identifiers.
119146 */
0 commit comments