diff --git a/src/libecmabuiltins/ecma-builtins.c b/src/libecmabuiltins/ecma-builtins.c index 87d8c5a8d..f9f6ffccb 100644 --- a/src/libecmabuiltins/ecma-builtins.c +++ b/src/libecmabuiltins/ecma-builtins.c @@ -249,9 +249,12 @@ ecma_builtin_make_function_object_for_routine (ecma_builtin_id_t builtin_id, /** ecma_magic_string_id_t routine_id) /**< name of the built-in object's routine property */ { - FIXME(Setup prototype of Function object to built-in Function prototype object (15.3.3.1)); + ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE); + + ecma_object_t *func_obj_p = ecma_create_object (prototype_obj_p, true, ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION); + + ecma_deref_object (prototype_obj_p); - ecma_object_t *func_obj_p = ecma_create_object (NULL, true, ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION); ecma_set_object_is_builtin (func_obj_p, true); uint64_t packed_value = jrt_set_bit_field_value (0, diff --git a/src/libecmaoperations/ecma-function-object.c b/src/libecmaoperations/ecma-function-object.c index 72a342072..db5aff4a7 100644 --- a/src/libecmaoperations/ecma-function-object.c +++ b/src/libecmaoperations/ecma-function-object.c @@ -142,9 +142,11 @@ ecma_op_create_function_object (ecma_string_t* formal_parameter_list_p[], /**< f opcode_counter_t first_opcode_idx) /**< index of first opcode of function's body */ { // 1., 4., 13. - FIXME(Setup prototype of Function object to built-in Function prototype object (15.3.3.1)); + ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_FUNCTION_PROTOTYPE); - ecma_object_t *f = ecma_create_object (NULL, true, ECMA_OBJECT_TYPE_FUNCTION); + ecma_object_t *f = ecma_create_object (prototype_obj_p, true, ECMA_OBJECT_TYPE_FUNCTION); + + ecma_deref_object (prototype_obj_p); // 2., 6., 7., 8. /*