@@ -590,6 +590,49 @@ jerry_get_array_index_value (jerry_object_t *array_obj_p, /**< array object */
590590 return false;
591591} /* jerry_get_array_index_value */
592592
593+ /**
594+ * Get length property value of an object
595+ *
596+ * @return length of the given object
597+ */
598+ inline static jerry_length_t __attr_always_inline___
599+ jerry_get_length (const jerry_object_t * object_p )
600+ {
601+ jerry_length_t length = 0 ;
602+ ecma_string_t * magic_string_length_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH );
603+ ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY );
604+
605+ ECMA_TRY_CATCH (len_value ,
606+ ecma_op_object_get ((jerry_object_t * ) object_p , magic_string_length_p ),
607+ ret_value );
608+ ECMA_OP_TO_NUMBER_TRY_CATCH (len_number , len_value , ret_value );
609+
610+ length = ecma_number_to_uint32 (len_number );
611+
612+ ECMA_OP_TO_NUMBER_FINALIZE (len_number );
613+ ECMA_FINALIZE (len_value );
614+
615+ ecma_deref_ecma_string (magic_string_length_p );
616+ JERRY_ASSERT (!ECMA_IS_VALUE_ERROR (ret_value ));
617+
618+ return length ;
619+ } /* jerry_get_length */
620+
621+ /**
622+ * Get length of an array object
623+ *
624+ * @return length of the given array
625+ */
626+ jerry_length_t
627+ jerry_get_array_length (const jerry_object_t * object_p )
628+ {
629+ jerry_assert_api_available ();
630+
631+ JERRY_ASSERT (jerry_is_array (object_p ));
632+
633+ return jerry_get_length (object_p );
634+ } /* jerry_get_array_length */
635+
593636/**
594637 * Create an error object
595638 *
@@ -757,6 +800,20 @@ jerry_dispatch_object_free_callback (ecma_external_pointer_t freecb_p, /**< poin
757800 jerry_make_api_available ();
758801} /* jerry_dispatch_object_free_callback */
759802
803+ /**
804+ * Check if the specified object is an array object.
805+ *
806+ * @return true - if the specified object is an array object,
807+ * false - otherwise.
808+ */
809+ bool
810+ jerry_is_array (const jerry_object_t * object_p ) /**< an object */
811+ {
812+ jerry_assert_api_available ();
813+
814+ return (ecma_object_get_class_name ((jerry_object_t * ) object_p ) == LIT_MAGIC_STRING_ARRAY_UL );
815+ } /* jerry_is_array */
816+
760817/**
761818 * Check if the specified object is a function object.
762819 *
0 commit comments