File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -352,9 +352,43 @@ ecma_gc_mark (ecma_object_t *object_p) /**< object to mark from */
352352 case ECMA_INTERNAL_PROPERTY_NON_INSTANTIATED_BUILT_IN_MASK_32_63: /* an integer (bit-mask) */
353353 case ECMA_INTERNAL_PROPERTY_REGEXP_BYTECODE:
354354 case ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_TARGET_FUNCTION:
355+ {
356+ break ;
357+ }
358+
355359 case ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_BOUND_THIS:
360+ {
361+ if (ecma_is_value_object (property_value))
362+ {
363+ ecma_object_t *obj_p = ecma_get_object_from_value (property_value);
364+
365+ ecma_gc_set_object_visited (obj_p, true );
366+ }
367+
368+ break ;
369+ }
370+
356371 case ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_BOUND_ARGS:
357372 {
373+ ecma_collection_header_t *bound_arg_list_p = ECMA_GET_NON_NULL_POINTER (ecma_collection_header_t ,
374+ property_value);
375+
376+ ecma_collection_iterator_t bound_args_iterator;
377+ ecma_collection_iterator_init (&bound_args_iterator, bound_arg_list_p);
378+
379+ for (ecma_length_t i = 0 ; i < bound_arg_list_p->unit_number ; i++)
380+ {
381+ bool is_moved = ecma_collection_iterator_next (&bound_args_iterator);
382+ JERRY_ASSERT (is_moved);
383+
384+ if (ecma_is_value_object (*bound_args_iterator.current_value_p ))
385+ {
386+ ecma_object_t *obj_p = ecma_get_object_from_value (*bound_args_iterator.current_value_p );
387+
388+ ecma_gc_set_object_visited (obj_p, true );
389+ }
390+ }
391+
358392 break ;
359393 }
360394
You can’t perform that action at this time.
0 commit comments