diff --git a/jerry-core/jerry-api.h b/jerry-core/jerry-api.h index a026e4e65..27010d295 100644 --- a/jerry-core/jerry-api.h +++ b/jerry-core/jerry-api.h @@ -229,6 +229,9 @@ jerry_completion_code_t jerry_api_eval (const jerry_api_char_t *, size_t, bool, extern EXTERN_C jerry_api_object_t *jerry_api_get_global (void); +extern EXTERN_C +void jerry_api_gc (void); + extern EXTERN_C void jerry_register_external_magic_strings (const jerry_api_char_ptr_t *, uint32_t, const jerry_api_length_t *); diff --git a/jerry-core/jerry.cpp b/jerry-core/jerry.cpp index acd977230..1468f51da 100644 --- a/jerry-core/jerry.cpp +++ b/jerry-core/jerry.cpp @@ -1375,6 +1375,17 @@ jerry_api_eval (const jerry_api_char_t *source_p, /**< source code */ return status; } /* jerry_api_eval */ +/** + * Perform GC + */ +void +jerry_api_gc (void) +{ + jerry_assert_api_available (); + + ecma_gc_run (); +} /* jerry_api_gc */ + /** * Jerry engine initialization */ diff --git a/tests/unit/test-api.cpp b/tests/unit/test-api.cpp index 343ba4664..0feebd176 100644 --- a/tests/unit/test-api.cpp +++ b/tests/unit/test-api.cpp @@ -660,6 +660,9 @@ main (void) // cleanup. jerry_api_release_object (global_obj_p); + // TEST: run gc. + jerry_api_gc (); + jerry_cleanup (); JERRY_ASSERT (test_api_is_free_callback_was_called);