Implementing 'multiplication' opcode handler and unit test for the opcode.

This commit is contained in:
Ruben Ayrapetyan
2014-07-21 21:59:15 +04:00
parent 9b2b248728
commit 739d19be5b
8 changed files with 372 additions and 41 deletions
+68 -1
View File
@@ -89,6 +89,22 @@ ecma_MakeSimpleValue( ecma_SimpleValue_t value) /**< simple value */
return (ecma_Value_t) { .m_ValueType = ECMA_TYPE_SIMPLE, .m_Value = value };
} /* ecma_MakeSimpleValue */
/**
* Number value constructor
*/
ecma_Value_t
ecma_MakeNumberValue( ecma_Number_t* num_p) /**< number to reference in value */
{
JERRY_ASSERT( num_p != NULL );
ecma_Value_t number_value;
number_value.m_ValueType = ECMA_TYPE_NUMBER;
ecma_SetPointer( number_value.m_Value, num_p);
return number_value;
} /* ecma_MakeNumberValue */
/**
* Object value constructor
*/
@@ -255,6 +271,32 @@ ecma_MakeThrowValue( ecma_Object_t *exception_p) /**< an object */
ECMA_TARGET_ID_RESERVED);
} /* ecma_MakeThrowValue */
/**
* Empty completion value constructor.
*
* @return (normal, empty, reserved) completion value.
*/
ecma_CompletionValue_t
ecma_make_empty_completion_value( void)
{
return ecma_MakeCompletionValue( ECMA_COMPLETION_TYPE_NORMAL,
ecma_MakeSimpleValue( ECMA_SIMPLE_VALUE_EMPTY),
ECMA_TARGET_ID_RESERVED);
} /* ecma_make_empty_completion_value */
/**
* Copy ecma-completion value.
*
* @return (source.type, ecma_CopyValue( source.value), source.target).
*/
ecma_CompletionValue_t
ecma_copy_completion_value( ecma_CompletionValue_t value) /**< completion value */
{
return ecma_MakeCompletionValue( value.type,
ecma_CopyValue( value.value),
value.target);
} /* ecma_copy_completion_value */
/**
* Free the completion value.
*/
@@ -283,11 +325,36 @@ ecma_free_completion_value( ecma_CompletionValue_t completion_value) /**< comple
* false - otherwise.
*/
bool
ecma_is_completion_value_normal( ecma_CompletionValue_t value)
ecma_is_completion_value_normal( ecma_CompletionValue_t value) /**< completion value */
{
return ( value.type == ECMA_COMPLETION_TYPE_NORMAL );
} /* ecma_is_completion_value_normal */
/**
* Check if the completion value is throw value.
*
* @return true - if the completion type is throw,
* false - otherwise.
*/
bool
ecma_is_completion_value_throw( ecma_CompletionValue_t value) /**< completion value */
{
return ( value.type == ECMA_COMPLETION_TYPE_THROW );
} /* ecma_is_completion_value_throw */
/**
* Check if the completion value is normal or throw value.
*
* @return true - if the completion type is normal or throw,
* false - otherwise.
*/
bool
ecma_is_completion_value_normal_or_throw( ecma_CompletionValue_t value) /**< completion value */
{
return ecma_is_completion_value_normal( value)
|| ecma_is_completion_value_throw( value);
} /* ecma_is_completion_value_normal_or_throw */
/**
* Check if the completion value is specified normal simple value.
*
+5
View File
@@ -48,15 +48,20 @@ extern bool ecma_IsValueBoolean( ecma_Value_t value);
extern bool ecma_IsValueTrue( ecma_Value_t value);
extern ecma_Value_t ecma_MakeSimpleValue( ecma_SimpleValue_t value);
extern ecma_Value_t ecma_MakeNumberValue( ecma_Number_t* num_p);
extern ecma_Value_t ecma_MakeObjectValue( ecma_Object_t* object_p);
extern ecma_Value_t ecma_CopyValue( const ecma_Value_t value);
extern void ecma_FreeValue( const ecma_Value_t value);
extern ecma_CompletionValue_t ecma_MakeCompletionValue( ecma_CompletionType_t type, ecma_Value_t value, uint8_t target);
extern ecma_CompletionValue_t ecma_MakeThrowValue( ecma_Object_t *exception_p);
extern ecma_CompletionValue_t ecma_make_empty_completion_value( void);
extern ecma_CompletionValue_t ecma_copy_completion_value( ecma_CompletionValue_t value);
extern void ecma_free_completion_value( ecma_CompletionValue_t completion_value);
extern bool ecma_is_completion_value_normal( ecma_CompletionValue_t value);
extern bool ecma_is_completion_value_throw( ecma_CompletionValue_t value);
extern bool ecma_is_completion_value_normal_or_throw( ecma_CompletionValue_t value);
extern bool ecma_is_completion_value_normal_simple_value( ecma_CompletionValue_t value, ecma_SimpleValue_t simple_value);
extern bool ecma_IsCompletionValueNormalFalse( ecma_CompletionValue_t value);
extern bool ecma_IsCompletionValueNormalTrue( ecma_CompletionValue_t value);