Move push literal number opcodes to basic opcodes (#4609)
`obj[number]` is a widely used structure especially for array element indexing, however super property assignment is not. This patch moves super-assignment opcodes to ext opcodes and fills the freed 3 basic opcodes with push-literal-number ones. JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik robert.fancsik@h-lab.eu
This commit is contained in:
@@ -2764,22 +2764,22 @@ void
|
||||
lexer_convert_push_number_to_push_literal (parser_context_t *context_p) /**< context */
|
||||
{
|
||||
ecma_integer_value_t value;
|
||||
bool two_literals = !PARSER_IS_BASIC_OPCODE (context_p->last_cbc_opcode);
|
||||
bool two_literals = context_p->last_cbc_opcode >= CBC_PUSH_LITERAL_PUSH_NUMBER_0;
|
||||
|
||||
if (context_p->last_cbc_opcode == CBC_PUSH_NUMBER_0
|
||||
|| context_p->last_cbc_opcode == PARSER_TO_EXT_OPCODE (CBC_EXT_PUSH_LITERAL_PUSH_NUMBER_0))
|
||||
|| context_p->last_cbc_opcode == CBC_PUSH_LITERAL_PUSH_NUMBER_0)
|
||||
{
|
||||
value = 0;
|
||||
}
|
||||
else if (context_p->last_cbc_opcode == CBC_PUSH_NUMBER_POS_BYTE
|
||||
|| context_p->last_cbc_opcode == PARSER_TO_EXT_OPCODE (CBC_EXT_PUSH_LITERAL_PUSH_NUMBER_POS_BYTE))
|
||||
|| context_p->last_cbc_opcode == CBC_PUSH_LITERAL_PUSH_NUMBER_POS_BYTE)
|
||||
{
|
||||
value = ((ecma_integer_value_t) context_p->last_cbc.value) + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
JERRY_ASSERT (context_p->last_cbc_opcode == CBC_PUSH_NUMBER_NEG_BYTE
|
||||
|| context_p->last_cbc_opcode == PARSER_TO_EXT_OPCODE (CBC_EXT_PUSH_LITERAL_PUSH_NUMBER_NEG_BYTE));
|
||||
|| context_p->last_cbc_opcode == CBC_PUSH_LITERAL_PUSH_NUMBER_NEG_BYTE);
|
||||
value = -((ecma_integer_value_t) context_p->last_cbc.value) - 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user