Moving label descriptor from ecma_completion_value_t to separate structure on heap (fixing performance degradation that occured in commit 5d92544db57203603a6ed53b5c18562065a70b77).

This commit is contained in:
Ruben Ayrapetyan
2014-09-04 14:27:40 +04:00
parent 50371ddf20
commit 31b5451b50
4 changed files with 46 additions and 12 deletions
+20 -10
View File
@@ -132,7 +132,10 @@ typedef struct
typedef struct
{
/** Type (ecma_completion_type_t) */
unsigned int type : 8;
uint8_t type;
/** Just padding for the structure */
uint8_t padding;
union
{
@@ -148,16 +151,23 @@ typedef struct
*
* Used for break and continue completion types.
*/
struct
{
/** Levels to label left */
uint8_t depth;
uint16_t label_desc_cp;
} u;
} ecma_completion_value_t;
/** Target's offset */
uint16_t offset;
} __packed target;
} __packed u;
} __packed ecma_completion_value_t;
/**
* Label
*
* Used for break and continue completion types.
*/
typedef struct
{
/** Target's offset */
uint32_t offset;
/** Levels to label left */
uint32_t depth;
} ecma_label_descriptor_t;
/**
* Target value indicating that target field