@@ -192,10 +192,24 @@ ecma_builtin_object_object_freeze (ecma_value_t this_arg, /**< 'this' argument *
192
192
* Returned value must be freed with ecma_free_completion_value.
193
193
*/
194
194
static ecma_completion_value_t
195
- ecma_builtin_object_object_prevent_extensions (ecma_value_t this_arg, /* *< 'this' argument */
195
+ ecma_builtin_object_object_prevent_extensions (ecma_value_t this_arg __attr_unused___ , /* *< 'this' argument */
196
196
ecma_value_t arg) /* *< routine's argument */
197
197
{
198
- ECMA_BUILTIN_CP_UNIMPLEMENTED (this_arg, arg);
198
+ ecma_completion_value_t ret_value = ecma_make_empty_completion_value ();
199
+
200
+ if (!ecma_is_value_object (arg))
201
+ {
202
+ ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE));
203
+ }
204
+ else
205
+ {
206
+ ecma_object_t *obj_p = ecma_get_object_from_value (arg);
207
+ ecma_set_object_extensible (obj_p, false );
208
+
209
+ ret_value = ecma_make_normal_completion_value (ecma_copy_value (arg, true ));
210
+ }
211
+
212
+ return ret_value;
199
213
} /* ecma_builtin_object_object_prevent_extensions */
200
214
201
215
/* *
@@ -240,10 +254,27 @@ ecma_builtin_object_object_is_frozen (ecma_value_t this_arg, /**< 'this' argumen
240
254
* Returned value must be freed with ecma_free_completion_value.
241
255
*/
242
256
static ecma_completion_value_t
243
- ecma_builtin_object_object_is_extensible (ecma_value_t this_arg, /* *< 'this' argument */
257
+ ecma_builtin_object_object_is_extensible (ecma_value_t this_arg __attr_unused___ , /* *< 'this' argument */
244
258
ecma_value_t arg) /* *< routine's argument */
245
259
{
246
- ECMA_BUILTIN_CP_UNIMPLEMENTED (this_arg, arg);
260
+ ecma_completion_value_t ret_value = ecma_make_empty_completion_value ();
261
+
262
+ if (!ecma_is_value_object (arg))
263
+ {
264
+ ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE));
265
+ }
266
+ else
267
+ {
268
+ ecma_object_t *obj_p = ecma_get_object_from_value (arg);
269
+
270
+ bool extensible = ecma_get_object_extensible (obj_p);
271
+
272
+ ret_value = ecma_make_simple_completion_value (extensible
273
+ ? ECMA_SIMPLE_VALUE_TRUE
274
+ : ECMA_SIMPLE_VALUE_FALSE);
275
+ }
276
+
277
+ return ret_value;
247
278
} /* ecma_builtin_object_object_is_extensible */
248
279
249
280
/* *
0 commit comments