Introducing constructor for label completion values (for 'break' and 'continue' completion types).
This commit is contained in:
@@ -150,8 +150,8 @@ typedef struct
|
||||
*/
|
||||
struct
|
||||
{
|
||||
/** Levels left */
|
||||
uint8_t level;
|
||||
/** Levels to label left */
|
||||
uint8_t depth;
|
||||
|
||||
/** Target's offset */
|
||||
uint16_t offset;
|
||||
|
||||
@@ -279,7 +279,7 @@ ecma_free_value (ecma_value_t value, /**< value description */
|
||||
} /* ecma_free_value */
|
||||
|
||||
/**
|
||||
* Completion value constructor
|
||||
* Normal, throw, return, exit and meta completion values constructor
|
||||
*
|
||||
* @return completion value
|
||||
*/
|
||||
@@ -303,6 +303,29 @@ ecma_make_completion_value (ecma_completion_type_t type, /**< type */
|
||||
return ret_value;
|
||||
} /* ecma_make_completion_value */
|
||||
|
||||
/**
|
||||
* Break and continue completion values constructor
|
||||
*
|
||||
* @return completion value
|
||||
*/
|
||||
ecma_completion_value_t
|
||||
ecma_make_label_completion_value (ecma_completion_type_t type, /**< type */
|
||||
uint8_t depth_level, /**< depth level (in try constructions,
|
||||
with blocks, etc.) */
|
||||
uint16_t offset) /**< offset to label from end of last block */
|
||||
{
|
||||
JERRY_ASSERT (type == ECMA_COMPLETION_TYPE_BREAK
|
||||
|| type == ECMA_COMPLETION_TYPE_CONTINUE);
|
||||
|
||||
ecma_completion_value_t ret_value;
|
||||
|
||||
ret_value.type = type;
|
||||
ret_value.u.target.depth = depth_level;
|
||||
ret_value.u.target.offset = offset;
|
||||
|
||||
return ret_value;
|
||||
} /* ecma_make_label_completion_value */
|
||||
|
||||
/**
|
||||
* Simple normal completion value constructor
|
||||
*
|
||||
|
||||
@@ -70,6 +70,9 @@ extern void ecma_free_value (const ecma_value_t value, bool do_deref_if_object);
|
||||
|
||||
extern ecma_completion_value_t ecma_make_completion_value (ecma_completion_type_t type,
|
||||
ecma_value_t value);
|
||||
extern ecma_completion_value_t ecma_make_label_completion_value (ecma_completion_type_t type,
|
||||
uint8_t depth_level,
|
||||
uint16_t offset);
|
||||
extern ecma_completion_value_t ecma_make_simple_completion_value (ecma_simple_value_t simple_value);
|
||||
extern ecma_completion_value_t ecma_make_throw_value (ecma_object_t *exception_p);
|
||||
extern ecma_completion_value_t ecma_make_empty_completion_value (void);
|
||||
|
||||
Reference in New Issue
Block a user