Skip to content

Commit a816ab8

Browse files
committed
Use 'ecma_value_t' in API too
JerryScript-DCO-1.0-Signed-off-by: László Langó [email protected]
1 parent b828d4a commit a816ab8

File tree

7 files changed

+364
-750
lines changed

7 files changed

+364
-750
lines changed

jerry-core/ecma/operations/ecma-function-object.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -655,16 +655,11 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */
655655
&handler_p);
656656
JERRY_ASSERT (is_retrieved);
657657

658-
ecma_collection_header_t *arg_collection_p = ecma_new_values_collection (arguments_list_p,
659-
arguments_list_len,
660-
true);
661-
662658
ret_value = jerry_dispatch_external_function (func_obj_p,
663659
handler_p,
664660
this_arg_value,
665-
arg_collection_p);
666-
667-
ecma_free_values_collection (arg_collection_p, true);
661+
arguments_list_p,
662+
arguments_list_len);
668663
}
669664
else
670665
{

jerry-core/jerry-api.h

Lines changed: 27 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,6 @@ typedef enum
4242
JERRY_COMPLETION_CODE_INVALID_SNAPSHOT_FORMAT = 3, /**< snapshot format is not valid */
4343
} jerry_completion_code_t;
4444

45-
/**
46-
* Jerry API data types
47-
*/
48-
typedef enum
49-
{
50-
JERRY_DATA_TYPE_VOID, /**< no return value */
51-
JERRY_DATA_TYPE_UNDEFINED, /**< undefined */
52-
JERRY_DATA_TYPE_NULL, /**< null */
53-
JERRY_DATA_TYPE_BOOLEAN, /**< bool */
54-
JERRY_DATA_TYPE_FLOAT32, /**< 32-bit float */
55-
JERRY_DATA_TYPE_FLOAT64, /**< 64-bit float */
56-
JERRY_DATA_TYPE_UINT32, /**< number converted to 32-bit unsigned integer */
57-
JERRY_DATA_TYPE_STRING, /**< string */
58-
JERRY_DATA_TYPE_OBJECT /**< object */
59-
} jerry_data_type_t;
60-
6145
/**
6246
* Jerry API Error object types
6347
*/
@@ -103,32 +87,15 @@ typedef struct ecma_string_t jerry_string_t;
10387
typedef struct ecma_object_t jerry_object_t;
10488

10589
/**
106-
* Description of an extension function's argument
90+
* Description of a JerryScript value
10791
*/
108-
typedef struct jerry_value_t
109-
{
110-
jerry_data_type_t type; /**< argument data type */
111-
112-
union
113-
{
114-
bool v_bool; /**< boolean */
115-
116-
float v_float32; /**< 32-bit float */
117-
double v_float64; /**< 64-bit float */
118-
119-
uint32_t v_uint32; /**< number converted 32-bit unsigned integer */
120-
121-
jerry_string_t *v_string; /**< pointer to a JS string */
122-
jerry_object_t *v_object; /**< pointer to a JS object */
123-
124-
} u;
125-
} jerry_value_t;
92+
typedef uint32_t jerry_value_t;
12693

12794
/**
12895
* Type of an external function handler
12996
*/
13097
typedef bool (*jerry_external_handler_t) (const jerry_object_t *function_obj_p,
131-
const jerry_value_t *this_p,
98+
const jerry_value_t this_val,
13299
jerry_value_t *ret_val_p,
133100
const jerry_value_t args_p[],
134101
const jerry_length_t args_count);
@@ -142,7 +109,7 @@ typedef void (*jerry_object_free_callback_t) (const uintptr_t native_p);
142109
* Function type applied for each fields in objects
143110
*/
144111
typedef bool (*jerry_object_field_foreach_t) (const jerry_string_t *field_name_p,
145-
const jerry_value_t *field_value_p,
112+
const jerry_value_t field_value_p,
146113
void *user_data_p);
147114

148115
/**
@@ -153,52 +120,51 @@ jerry_object_t *jerry_get_global (void);
153120
/**
154121
* Checker functions of 'jerry_value_t'
155122
*/
156-
bool jerry_value_is_void (const jerry_value_t *value_p);
157-
bool jerry_value_is_null (const jerry_value_t *value_p);
158-
bool jerry_value_is_undefined (const jerry_value_t *value_p);
159-
bool jerry_value_is_boolean (const jerry_value_t *value_p);
160-
bool jerry_value_is_number (const jerry_value_t *value_p);
161-
bool jerry_value_is_string (const jerry_value_t *value_p);
162-
bool jerry_value_is_object (const jerry_value_t *value_p);
163-
bool jerry_value_is_function (const jerry_value_t *value_p);
123+
bool jerry_value_is_boolean (const jerry_value_t);
124+
bool jerry_value_is_error (const jerry_value_t);
125+
bool jerry_value_is_function (const jerry_value_t);
126+
bool jerry_value_is_number (const jerry_value_t);
127+
bool jerry_value_is_null (const jerry_value_t);
128+
bool jerry_value_is_object (const jerry_value_t);
129+
bool jerry_value_is_string (const jerry_value_t);
130+
bool jerry_value_is_undefined (const jerry_value_t);
164131

165132
/**
166133
* Getter functions of 'jerry_value_t'
167134
*/
168-
bool jerry_get_boolean_value (const jerry_value_t *value_p);
169-
double jerry_get_number_value (const jerry_value_t *value_p);
170-
jerry_string_t *jerry_get_string_value (const jerry_value_t *value_p);
171-
jerry_object_t *jerry_get_object_value (const jerry_value_t *value_p);
135+
bool jerry_get_boolean_value (const jerry_value_t);
136+
double jerry_get_number_value (const jerry_value_t);
137+
jerry_string_t *jerry_get_string_value (const jerry_value_t);
138+
jerry_object_t *jerry_get_object_value (const jerry_value_t);
172139

173140
/**
174141
* Converters of 'jerry_value_t'
175142
*/
176-
jerry_string_t *jerry_value_to_string (const jerry_value_t *);
143+
jerry_value_t jerry_value_to_string (const jerry_value_t);
177144

178145
/**
179146
* Create functions of 'jerry_value_t'
180147
*/
181-
jerry_value_t jerry_create_void_value (void);
182148
jerry_value_t jerry_create_null_value (void);
183149
jerry_value_t jerry_create_undefined_value (void);
184-
jerry_value_t jerry_create_boolean_value (bool value);
185-
jerry_value_t jerry_create_number_value (double value);
186-
jerry_value_t jerry_create_object_value (jerry_object_t *value);
187-
jerry_value_t jerry_create_string_value (jerry_string_t *value);
150+
jerry_value_t jerry_create_boolean_value (bool);
151+
jerry_value_t jerry_create_number_value (double);
152+
jerry_value_t jerry_create_object_value (jerry_object_t *);
153+
jerry_value_t jerry_create_string_value (jerry_string_t *);
188154

189155
/**
190156
* Acquire types with reference counter (increase the references)
191157
*/
192158
jerry_string_t *jerry_acquire_string (jerry_string_t *);
193159
jerry_object_t *jerry_acquire_object (jerry_object_t *);
194-
jerry_value_t *jerry_acquire_value (jerry_value_t *);
160+
jerry_value_t jerry_acquire_value (jerry_value_t);
195161

196162
/**
197163
* Relase the referenced values
198164
*/
199165
void jerry_release_object (jerry_object_t *);
200166
void jerry_release_string (jerry_string_t *);
201-
void jerry_release_value (jerry_value_t *);
167+
void jerry_release_value (jerry_value_t);
202168

203169
/**
204170
* Create functions of API objects
@@ -214,7 +180,7 @@ jerry_string_t *jerry_create_string_sz (const jerry_char_t *, jerry_size_t);
214180
/**
215181
* Functions of array objects
216182
*/
217-
bool jerry_set_array_index_value (jerry_object_t *, jerry_length_t, jerry_value_t *);
183+
bool jerry_set_array_index_value (jerry_object_t *, jerry_length_t, jerry_value_t);
218184
bool jerry_get_array_index_value (jerry_object_t *, jerry_length_t, jerry_value_t *);
219185

220186
/**
@@ -229,12 +195,12 @@ jerry_size_t jerry_string_to_char_buffer (const jerry_string_t *, jerry_char_t *
229195
*/
230196
bool jerry_is_constructor (const jerry_object_t *);
231197
bool jerry_is_function (const jerry_object_t *);
232-
bool jerry_add_object_field (jerry_object_t *, const jerry_char_t *, jerry_size_t, const jerry_value_t *, bool);
198+
bool jerry_add_object_field (jerry_object_t *, const jerry_char_t *, jerry_size_t, const jerry_value_t, bool);
233199
bool jerry_delete_object_field (jerry_object_t *, const jerry_char_t *, jerry_size_t);
234200
bool jerry_get_object_field_value (jerry_object_t *, const jerry_char_t *, jerry_value_t *);
235201
bool jerry_get_object_field_value_sz (jerry_object_t *, const jerry_char_t *, jerry_size_t, jerry_value_t *);
236-
bool jerry_set_object_field_value (jerry_object_t *, const jerry_char_t *, const jerry_value_t *);
237-
bool jerry_set_object_field_value_sz (jerry_object_t *, const jerry_char_t *, jerry_size_t, const jerry_value_t *);
202+
bool jerry_set_object_field_value (jerry_object_t *, const jerry_char_t *, const jerry_value_t);
203+
bool jerry_set_object_field_value_sz (jerry_object_t *, const jerry_char_t *, jerry_size_t, const jerry_value_t);
238204
bool jerry_foreach_object_field (jerry_object_t *, jerry_object_field_foreach_t, void *);
239205
bool jerry_get_object_native_handle (jerry_object_t *, uintptr_t *);
240206
void jerry_set_object_native_handle (jerry_object_t *, uintptr_t, jerry_object_free_callback_t);

jerry-core/jerry-internal.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,11 @@
2424
#include "jerry-api.h"
2525

2626
extern ecma_value_t
27-
jerry_dispatch_external_function (ecma_object_t *, ecma_external_pointer_t, ecma_value_t, ecma_collection_header_t *);
27+
jerry_dispatch_external_function (ecma_object_t *,
28+
ecma_external_pointer_t,
29+
ecma_value_t,
30+
const ecma_value_t *,
31+
ecma_length_t);
2832

2933
extern void
3034
jerry_dispatch_object_free_callback (ecma_external_pointer_t, ecma_external_pointer_t);

0 commit comments

Comments
 (0)