Implementing 'multiplication' opcode handler and unit test for the opcode.
This commit is contained in:
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user