/** * Initialize GC information for the object */ void ecma_init_gc_info (ecma_object_t *object_p) /**< object */ { ecma_gc_set_object_refs (object_p, 1); ecma_gc_set_object_next (object_p, ecma_gc_objects_lists[ECMA_GC_COLOR_WHITE_GRAY]); ecma_gc_objects_lists[ECMA_GC_COLOR_WHITE_GRAY] = object_p; /* Should be set to false at the beginning of garbage collection */ ecma_gc_set_object_visited (object_p, false); } /* ecma_init_gc_info */
/** * Initialize GC information for the object */ void ecma_init_gc_info (ecma_object_t *object_p) /**< object */ { ecma_gc_objects_number++; ecma_gc_new_objects_since_last_gc++; JERRY_ASSERT (ecma_gc_new_objects_since_last_gc <= ecma_gc_objects_number); ecma_gc_set_object_refs (object_p, 1); ecma_gc_set_object_next (object_p, ecma_gc_objects_lists[ECMA_GC_COLOR_WHITE_GRAY]); ecma_gc_objects_lists[ECMA_GC_COLOR_WHITE_GRAY] = object_p; /* Should be set to false at the beginning of garbage collection */ ecma_gc_set_object_visited (object_p, false); } /* ecma_init_gc_info */
/** * Decrease reference counter of an object */ void ecma_deref_object (ecma_object_t *object_p) /**< object */ { JERRY_ASSERT (ecma_gc_get_object_refs (object_p) > 0); ecma_gc_set_object_refs (object_p, ecma_gc_get_object_refs (object_p) - 1); } /* ecma_deref_object */
/** * Increase reference counter of an object */ void ecma_ref_object (ecma_object_t *object_p) /**< object */ { ecma_gc_set_object_refs (object_p, ecma_gc_get_object_refs (object_p) + 1); } /* ecma_ref_object */