OPCODE define replaced with opcode_t. T_IDX define replaced with idx_t.

This commit is contained in:
e.gavrin
2014-08-23 00:53:41 +04:00
parent 0eece0be5a
commit a99907670b
30 changed files with 368 additions and 362 deletions
+10 -10
View File
@@ -30,15 +30,15 @@ static const opfunc __opfuncs[LAST_OP] =
};
#undef __INIT_OP_FUNC
JERRY_STATIC_ASSERT (sizeof (OPCODE) <= 4);
JERRY_STATIC_ASSERT (sizeof (opcode_t) <= 4);
const OPCODE *__program = NULL;
const opcode_t *__program = NULL;
/**
* Initialize interpreter.
*/
void
init_int (const OPCODE *program_p) /**< pointer to byte-code program */
init_int (const opcode_t *program_p) /**< pointer to byte-code program */
{
JERRY_ASSERT (__program == NULL);
@@ -104,11 +104,11 @@ run_int_from_pos (opcode_counter_t start_pos,
{
ecma_completion_value_t completion;
const OPCODE *curr = &__program[start_pos];
const opcode_t *curr = &__program[start_pos];
JERRY_ASSERT (curr->op_idx == __op__idx_reg_var_decl);
const T_IDX min_reg_num = curr->data.reg_var_decl.min;
const T_IDX max_reg_num = curr->data.reg_var_decl.max;
const idx_t min_reg_num = curr->data.reg_var_decl.min;
const idx_t max_reg_num = curr->data.reg_var_decl.max;
JERRY_ASSERT (max_reg_num >= min_reg_num);
const uint32_t regs_num = (uint32_t) (max_reg_num - min_reg_num + 1);
@@ -133,7 +133,7 @@ run_int_from_pos (opcode_counter_t start_pos,
{
do
{
const OPCODE *curr = &__program[int_data.pos];
const opcode_t *curr = &__program[int_data.pos];
completion = __opfuncs[curr->op_idx] (*curr, &int_data);
JERRY_ASSERT (!ecma_is_completion_value_normal (completion)
@@ -172,7 +172,7 @@ run_int_from_pos (opcode_counter_t start_pos,
* otherwise (buffer size is not enough) - negated minimum required buffer size.
*/
ssize_t
try_get_string_by_idx (T_IDX idx, /**< literal id */
try_get_string_by_idx (idx_t idx, /**< literal id */
ecma_char_t *buffer_p, /**< buffer */
ssize_t buffer_size) /**< buffer size */
{
@@ -205,7 +205,7 @@ try_get_string_by_idx (T_IDX idx, /**< literal id */
* @return value of number literal, corresponding to specified literal id
*/
ecma_number_t
get_number_by_idx (T_IDX idx) /**< literal id */
get_number_by_idx (idx_t idx) /**< literal id */
{
TODO (Actual number literal retrievement);
@@ -218,7 +218,7 @@ get_number_by_idx (T_IDX idx) /**< literal id */
/**
* Get specified opcode from the program.
*/
OPCODE
opcode_t
read_opcode (opcode_counter_t counter) /**< opcode counter */
{
return __program[ counter ];
+4 -4
View File
@@ -20,7 +20,7 @@
#include "globals.h"
#include "opcodes.h"
void init_int (const __opcode* program_p);
void init_int (const opcode_t* program_p);
bool run_int (void);
ecma_completion_value_t run_int_from_pos (opcode_counter_t start_pos,
ecma_value_t this_binding_value,
@@ -28,10 +28,10 @@ ecma_completion_value_t run_int_from_pos (opcode_counter_t start_pos,
bool is_strict,
bool is_eval_code);
ssize_t try_get_string_by_idx (T_IDX idx, ecma_char_t *buffer_p, ssize_t buffer_size);
ecma_number_t get_number_by_idx (T_IDX idx);
ssize_t try_get_string_by_idx (idx_t idx, ecma_char_t *buffer_p, ssize_t buffer_size);
ecma_number_t get_number_by_idx (idx_t idx);
__opcode read_opcode (opcode_counter_t counter);
opcode_t read_opcode (opcode_counter_t counter);
#endif /* INTERPRETER_H */
+9 -9
View File
@@ -24,11 +24,11 @@
* if argument evaluates to true.
*/
ecma_completion_value_t
opfunc_is_true_jmp (OPCODE opdata, /**< operation data */
opfunc_is_true_jmp (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX cond_var_idx = opdata.data.is_true_jmp.value;
const T_IDX dst_opcode_idx = opdata.data.is_true_jmp.opcode;
const idx_t cond_var_idx = opdata.data.is_true_jmp.value;
const idx_t dst_opcode_idx = opdata.data.is_true_jmp.opcode;
ecma_completion_value_t ret_value;
@@ -61,11 +61,11 @@ opfunc_is_true_jmp (OPCODE opdata, /**< operation data */
* if argument evaluates to false.
*/
ecma_completion_value_t
opfunc_is_false_jmp (OPCODE opdata, /**< operation data */
opfunc_is_false_jmp (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX cond_var_idx = opdata.data.is_false_jmp.value;
const T_IDX dst_opcode_idx = opdata.data.is_false_jmp.opcode;
const idx_t cond_var_idx = opdata.data.is_false_jmp.value;
const idx_t dst_opcode_idx = opdata.data.is_false_jmp.opcode;
ecma_completion_value_t ret_value;
@@ -97,7 +97,7 @@ opfunc_is_false_jmp (OPCODE opdata, /**< operation data */
* the opcode changes current opcode position to specified opcode index
*/
ecma_completion_value_t
opfunc_jmp (OPCODE opdata, /**< operation data */
opfunc_jmp (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
int_data->pos = opdata.data.jmp.opcode_idx;
@@ -112,7 +112,7 @@ opfunc_jmp (OPCODE opdata, /**< operation data */
* the opcode changes adds specified value to current opcode position
*/
ecma_completion_value_t
opfunc_jmp_down (OPCODE opdata, /**< operation data */
opfunc_jmp_down (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
JERRY_ASSERT (int_data->pos <= int_data->pos + opdata.data.jmp_up.opcode_count);
@@ -129,7 +129,7 @@ opfunc_jmp_down (OPCODE opdata, /**< operation data */
* the opcode changes substracts specified value from current opcode position
*/
ecma_completion_value_t
opfunc_jmp_up (OPCODE opdata, /**< operation data */
opfunc_jmp_up (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
JERRY_ASSERT (int_data->pos >= opdata.data.jmp_up.opcode_count);
+28 -28
View File
@@ -43,7 +43,7 @@ typedef enum
*/
static ecma_completion_value_t
do_number_bitwise_logic (__int_data *int_data, /**< interpreter context */
T_IDX dst_var_idx, /**< destination variable identifier */
idx_t dst_var_idx, /**< destination variable identifier */
number_bitwise_logic_op op, /**< number bitwise logic operation */
ecma_value_t left_value, /**< left value */
ecma_value_t right_value) /** right value */
@@ -125,12 +125,12 @@ do_number_bitwise_logic (__int_data *int_data, /**< interpreter context */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_b_and (OPCODE opdata, /**< operation data */
opfunc_b_and (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.b_and.dst;
const T_IDX left_var_idx = opdata.data.b_and.var_left;
const T_IDX right_var_idx = opdata.data.b_and.var_right;
const idx_t dst_var_idx = opdata.data.b_and.dst;
const idx_t left_var_idx = opdata.data.b_and.var_left;
const idx_t right_var_idx = opdata.data.b_and.var_right;
int_data->pos++;
@@ -160,12 +160,12 @@ opfunc_b_and (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_b_or (OPCODE opdata, /**< operation data */
opfunc_b_or (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.b_or.dst;
const T_IDX left_var_idx = opdata.data.b_or.var_left;
const T_IDX right_var_idx = opdata.data.b_or.var_right;
const idx_t dst_var_idx = opdata.data.b_or.dst;
const idx_t left_var_idx = opdata.data.b_or.var_left;
const idx_t right_var_idx = opdata.data.b_or.var_right;
int_data->pos++;
@@ -195,12 +195,12 @@ opfunc_b_or (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_b_xor (OPCODE opdata, /**< operation data */
opfunc_b_xor (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.b_xor.dst;
const T_IDX left_var_idx = opdata.data.b_xor.var_left;
const T_IDX right_var_idx = opdata.data.b_xor.var_right;
const idx_t dst_var_idx = opdata.data.b_xor.dst;
const idx_t left_var_idx = opdata.data.b_xor.var_left;
const idx_t right_var_idx = opdata.data.b_xor.var_right;
int_data->pos++;
@@ -230,12 +230,12 @@ opfunc_b_xor (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_b_shift_left (OPCODE opdata, /**< operation data */
opfunc_b_shift_left (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.b_shift_left.dst;
const T_IDX left_var_idx = opdata.data.b_shift_left.var_left;
const T_IDX right_var_idx = opdata.data.b_shift_left.var_right;
const idx_t dst_var_idx = opdata.data.b_shift_left.dst;
const idx_t left_var_idx = opdata.data.b_shift_left.var_left;
const idx_t right_var_idx = opdata.data.b_shift_left.var_right;
int_data->pos++;
@@ -265,12 +265,12 @@ opfunc_b_shift_left (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_b_shift_right (OPCODE opdata, /**< operation data */
opfunc_b_shift_right (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.b_shift_right.dst;
const T_IDX left_var_idx = opdata.data.b_shift_right.var_left;
const T_IDX right_var_idx = opdata.data.b_shift_right.var_right;
const idx_t dst_var_idx = opdata.data.b_shift_right.dst;
const idx_t left_var_idx = opdata.data.b_shift_right.var_left;
const idx_t right_var_idx = opdata.data.b_shift_right.var_right;
int_data->pos++;
@@ -300,12 +300,12 @@ opfunc_b_shift_right (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_b_shift_uright (OPCODE opdata, /**< operation data */
opfunc_b_shift_uright (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.b_shift_uright.dst;
const T_IDX left_var_idx = opdata.data.b_shift_uright.var_left;
const T_IDX right_var_idx = opdata.data.b_shift_uright.var_right;
const idx_t dst_var_idx = opdata.data.b_shift_uright.dst;
const idx_t left_var_idx = opdata.data.b_shift_uright.var_left;
const idx_t right_var_idx = opdata.data.b_shift_uright.var_right;
int_data->pos++;
@@ -335,11 +335,11 @@ opfunc_b_shift_uright (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_b_not (OPCODE opdata, /**< operation data */
opfunc_b_not (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.b_not.dst;
const T_IDX right_var_idx = opdata.data.b_not.var_right;
const idx_t dst_var_idx = opdata.data.b_not.dst;
const idx_t right_var_idx = opdata.data.b_not.var_right;
int_data->pos++;
+21 -21
View File
@@ -42,7 +42,7 @@ typedef enum
*/
static ecma_completion_value_t
do_number_arithmetic (__int_data *int_data, /**< interpreter context */
T_IDX dst_var_idx, /**< destination variable identifier */
idx_t dst_var_idx, /**< destination variable identifier */
number_arithmetic_op op, /**< number arithmetic operation */
ecma_value_t left_value, /**< left value */
ecma_value_t right_value) /** right value */
@@ -108,12 +108,12 @@ do_number_arithmetic (__int_data *int_data, /**< interpreter context */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_addition (OPCODE opdata, /**< operation data */
opfunc_addition (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.addition.dst;
const T_IDX left_var_idx = opdata.data.addition.var_left;
const T_IDX right_var_idx = opdata.data.addition.var_right;
const idx_t dst_var_idx = opdata.data.addition.dst;
const idx_t left_var_idx = opdata.data.addition.var_left;
const idx_t right_var_idx = opdata.data.addition.var_right;
int_data->pos++;
@@ -155,12 +155,12 @@ opfunc_addition (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_substraction (OPCODE opdata, /**< operation data */
opfunc_substraction (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.substraction.dst;
const T_IDX left_var_idx = opdata.data.substraction.var_left;
const T_IDX right_var_idx = opdata.data.substraction.var_right;
const idx_t dst_var_idx = opdata.data.substraction.dst;
const idx_t left_var_idx = opdata.data.substraction.var_left;
const idx_t right_var_idx = opdata.data.substraction.var_right;
int_data->pos++;
@@ -190,12 +190,12 @@ opfunc_substraction (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_multiplication (OPCODE opdata, /**< operation data */
opfunc_multiplication (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.multiplication.dst;
const T_IDX left_var_idx = opdata.data.multiplication.var_left;
const T_IDX right_var_idx = opdata.data.multiplication.var_right;
const idx_t dst_var_idx = opdata.data.multiplication.dst;
const idx_t left_var_idx = opdata.data.multiplication.var_left;
const idx_t right_var_idx = opdata.data.multiplication.var_right;
int_data->pos++;
@@ -225,12 +225,12 @@ opfunc_multiplication (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_division (OPCODE opdata, /**< operation data */
opfunc_division (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.division.dst;
const T_IDX left_var_idx = opdata.data.division.var_left;
const T_IDX right_var_idx = opdata.data.division.var_right;
const idx_t dst_var_idx = opdata.data.division.dst;
const idx_t left_var_idx = opdata.data.division.var_left;
const idx_t right_var_idx = opdata.data.division.var_right;
int_data->pos++;
@@ -260,12 +260,12 @@ opfunc_division (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_remainder (OPCODE opdata, /**< operation data */
opfunc_remainder (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.remainder.dst;
const T_IDX left_var_idx = opdata.data.remainder.var_left;
const T_IDX right_var_idx = opdata.data.remainder.var_right;
const idx_t dst_var_idx = opdata.data.remainder.dst;
const idx_t left_var_idx = opdata.data.remainder.var_left;
const idx_t right_var_idx = opdata.data.remainder.var_right;
int_data->pos++;
+4 -4
View File
@@ -32,8 +32,8 @@
#include "opcodes.h"
static bool do_strict_eval_arguments_check (ecma_reference_t) __unused;
static ecma_completion_value_t get_variable_value (__int_data *, T_IDX, bool) __unused;
static ecma_completion_value_t set_variable_value (__int_data *, T_IDX, ecma_value_t) __unused;
static ecma_completion_value_t get_variable_value (__int_data *, idx_t, bool) __unused;
static ecma_completion_value_t set_variable_value (__int_data *, idx_t, ecma_value_t) __unused;
/**
* Perform so-called 'strict eval or arguments reference' check
@@ -82,7 +82,7 @@ do_strict_eval_arguments_check (ecma_reference_t ref) /**< ECMA-reference */
*/
static ecma_completion_value_t
get_variable_value (__int_data *int_data, /**< interpreter context */
T_IDX var_idx, /**< variable identifier */
idx_t var_idx, /**< variable identifier */
bool do_eval_or_arguments_check) /** run 'strict eval or arguments reference' check
See also: do_strict_eval_arguments_check */
{
@@ -134,7 +134,7 @@ get_variable_value (__int_data *int_data, /**< interpreter context */
*/
static ecma_completion_value_t
set_variable_value (__int_data *int_data, /**< interpreter context */
T_IDX var_idx, /**< variable identifier */
idx_t var_idx, /**< variable identifier */
ecma_value_t value) /**< value to set */
{
ecma_completion_value_t ret_value;
+16 -16
View File
@@ -25,12 +25,12 @@
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_equal_value (OPCODE opdata, /**< operation data */
opfunc_equal_value (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.equal_value.dst;
const T_IDX left_var_idx = opdata.data.equal_value.var_left;
const T_IDX right_var_idx = opdata.data.equal_value.var_right;
const idx_t dst_var_idx = opdata.data.equal_value.dst;
const idx_t left_var_idx = opdata.data.equal_value.var_left;
const idx_t right_var_idx = opdata.data.equal_value.var_right;
int_data->pos++;
@@ -59,12 +59,12 @@ opfunc_equal_value (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_not_equal_value (OPCODE opdata, /**< operation data */
opfunc_not_equal_value (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.not_equal_value.dst;
const T_IDX left_var_idx = opdata.data.not_equal_value.var_left;
const T_IDX right_var_idx = opdata.data.not_equal_value.var_right;
const idx_t dst_var_idx = opdata.data.not_equal_value.dst;
const idx_t left_var_idx = opdata.data.not_equal_value.var_left;
const idx_t right_var_idx = opdata.data.not_equal_value.var_right;
int_data->pos++;
@@ -94,12 +94,12 @@ opfunc_not_equal_value (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_equal_value_type (OPCODE opdata, /**< operation data */
opfunc_equal_value_type (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.equal_value_type.dst;
const T_IDX left_var_idx = opdata.data.equal_value_type.var_left;
const T_IDX right_var_idx = opdata.data.equal_value_type.var_right;
const idx_t dst_var_idx = opdata.data.equal_value_type.dst;
const idx_t left_var_idx = opdata.data.equal_value_type.var_left;
const idx_t right_var_idx = opdata.data.equal_value_type.var_right;
int_data->pos++;
@@ -128,12 +128,12 @@ opfunc_equal_value_type (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_not_equal_value_type (OPCODE opdata, /**< operation data */
opfunc_not_equal_value_type (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.not_equal_value_type.dst;
const T_IDX left_var_idx = opdata.data.not_equal_value_type.var_left;
const T_IDX right_var_idx = opdata.data.not_equal_value_type.var_right;
const idx_t dst_var_idx = opdata.data.not_equal_value_type.dst;
const idx_t left_var_idx = opdata.data.not_equal_value_type.var_left;
const idx_t right_var_idx = opdata.data.not_equal_value_type.var_right;
int_data->pos++;
+24 -24
View File
@@ -25,12 +25,12 @@
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_less_than (OPCODE opdata, /**< operation data */
opfunc_less_than (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.less_than.dst;
const T_IDX left_var_idx = opdata.data.less_than.var_left;
const T_IDX right_var_idx = opdata.data.less_than.var_right;
const idx_t dst_var_idx = opdata.data.less_than.dst;
const idx_t left_var_idx = opdata.data.less_than.var_left;
const idx_t right_var_idx = opdata.data.less_than.var_right;
int_data->pos++;
@@ -75,12 +75,12 @@ opfunc_less_than (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_greater_than (OPCODE opdata, /**< operation data */
opfunc_greater_than (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.greater_than.dst;
const T_IDX left_var_idx = opdata.data.greater_than.var_left;
const T_IDX right_var_idx = opdata.data.greater_than.var_right;
const idx_t dst_var_idx = opdata.data.greater_than.dst;
const idx_t left_var_idx = opdata.data.greater_than.var_left;
const idx_t right_var_idx = opdata.data.greater_than.var_right;
int_data->pos++;
@@ -125,12 +125,12 @@ opfunc_greater_than (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_less_or_equal_than (OPCODE opdata, /**< operation data */
opfunc_less_or_equal_than (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.less_or_equal_than.dst;
const T_IDX left_var_idx = opdata.data.less_or_equal_than.var_left;
const T_IDX right_var_idx = opdata.data.less_or_equal_than.var_right;
const idx_t dst_var_idx = opdata.data.less_or_equal_than.dst;
const idx_t left_var_idx = opdata.data.less_or_equal_than.var_left;
const idx_t right_var_idx = opdata.data.less_or_equal_than.var_right;
int_data->pos++;
@@ -182,12 +182,12 @@ opfunc_less_or_equal_than (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_greater_or_equal_than (OPCODE opdata, /**< operation data */
opfunc_greater_or_equal_than (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.greater_or_equal_than.dst;
const T_IDX left_var_idx = opdata.data.greater_or_equal_than.var_left;
const T_IDX right_var_idx = opdata.data.greater_or_equal_than.var_right;
const idx_t dst_var_idx = opdata.data.greater_or_equal_than.dst;
const idx_t left_var_idx = opdata.data.greater_or_equal_than.var_left;
const idx_t right_var_idx = opdata.data.greater_or_equal_than.var_right;
int_data->pos++;
@@ -239,12 +239,12 @@ opfunc_greater_or_equal_than (OPCODE opdata, /**< operation data */
* returned value must be freed with ecma_free_completion_value.
*/
ecma_completion_value_t
opfunc_instanceof (OPCODE opdata __unused, /**< operation data */
opfunc_instanceof (opcode_t opdata __unused, /**< operation data */
__int_data *int_data __unused) /**< interpreter context */
{
const T_IDX dst_idx = opdata.data.instanceof.dst;
const T_IDX left_var_idx = opdata.data.instanceof.var_left;
const T_IDX right_var_idx = opdata.data.instanceof.var_right;
const idx_t dst_idx = opdata.data.instanceof.dst;
const idx_t left_var_idx = opdata.data.instanceof.var_left;
const idx_t right_var_idx = opdata.data.instanceof.var_right;
ecma_completion_value_t ret_value;
@@ -284,12 +284,12 @@ opfunc_instanceof (OPCODE opdata __unused, /**< operation data */
* returned value must be freed with ecma_free_completion_value.
*/
ecma_completion_value_t
opfunc_in (OPCODE opdata __unused, /**< operation data */
opfunc_in (opcode_t opdata __unused, /**< operation data */
__int_data *int_data __unused) /**< interpreter context */
{
const T_IDX dst_idx = opdata.data.in.dst;
const T_IDX left_var_idx = opdata.data.in.var_left;
const T_IDX right_var_idx = opdata.data.in.var_right;
const idx_t dst_idx = opdata.data.in.dst;
const idx_t left_var_idx = opdata.data.in.var_left;
const idx_t right_var_idx = opdata.data.in.var_right;
ecma_completion_value_t ret_value;
+84 -53
View File
@@ -64,7 +64,7 @@ typedef struct
* Initialize string literal copy.
*/
static void
init_string_literal_copy (T_IDX idx, /**< literal identifier */
init_string_literal_copy (idx_t idx, /**< literal identifier */
string_literal_copy *str_lit_descr_p) /**< pointer to string literal copy descriptor */
{
JERRY_ASSERT (str_lit_descr_p != NULL);
@@ -136,7 +136,7 @@ free_string_literal_copy (string_literal_copy *str_lit_descr_p) /**< string lite
static char __unused unimplemented_list_end
#define DEFINE_UNIMPLEMENTED_OP(op) \
ecma_completion_value_t opfunc_ ## op (OPCODE opdata, __int_data *int_data) \
ecma_completion_value_t opfunc_ ## op (opcode_t opdata, __int_data *int_data) \
{ \
JERRY_UNIMPLEMENTED_REF_UNUSED_VARS (opdata, int_data); \
}
@@ -148,7 +148,7 @@ OP_UNIMPLEMENTED_LIST (DEFINE_UNIMPLEMENTED_OP);
* 'Nop' opcode handler.
*/
ecma_completion_value_t
opfunc_nop (OPCODE opdata __unused, /**< operation data */
opfunc_nop (opcode_t opdata __unused, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
int_data->pos++;
@@ -157,7 +157,7 @@ opfunc_nop (OPCODE opdata __unused, /**< operation data */
} /* opfunc_nop */
ecma_completion_value_t
opfunc_call_1 (OPCODE opdata __unused, __int_data *int_data)
opfunc_call_1 (opcode_t opdata __unused, __int_data *int_data)
{
ecma_completion_value_t ret_value;
ret_value = ecma_make_empty_completion_value ();
@@ -250,8 +250,8 @@ opfunc_call_1 (OPCODE opdata __unused, __int_data *int_data)
if (!is_native_call)
{
const T_IDX func_name_lit_idx = opdata.data.call_1.name_lit_idx;
const T_IDX lhs_var_idx = opdata.data.call_1.lhs;
const idx_t func_name_lit_idx = opdata.data.call_1.name_lit_idx;
const idx_t lhs_var_idx = opdata.data.call_1.lhs;
ECMA_TRY_CATCH (func_value, get_variable_value (int_data, func_name_lit_idx, false), ret_value);
@@ -298,12 +298,12 @@ opfunc_call_1 (OPCODE opdata __unused, __int_data *int_data)
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_assignment (OPCODE opdata, /**< operation data */
opfunc_assignment (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.assignment.var_left;
const idx_t dst_var_idx = opdata.data.assignment.var_left;
const opcode_arg_type_operand type_value_right = opdata.data.assignment.type_value_right;
const T_IDX src_val_descr = opdata.data.assignment.value_right;
const idx_t src_val_descr = opdata.data.assignment.value_right;
int_data->pos++;
@@ -384,11 +384,11 @@ opfunc_assignment (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_pre_incr (OPCODE opdata, /**< operation data */
opfunc_pre_incr (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.pre_incr.dst;
const T_IDX incr_var_idx = opdata.data.pre_incr.var_right;
const idx_t dst_var_idx = opdata.data.pre_incr.dst;
const idx_t incr_var_idx = opdata.data.pre_incr.var_right;
int_data->pos++;
@@ -434,11 +434,11 @@ opfunc_pre_incr (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_pre_decr (OPCODE opdata, /**< operation data */
opfunc_pre_decr (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.pre_decr.dst;
const T_IDX decr_var_idx = opdata.data.pre_decr.var_right;
const idx_t dst_var_idx = opdata.data.pre_decr.dst;
const idx_t decr_var_idx = opdata.data.pre_decr.var_right;
int_data->pos++;
@@ -484,11 +484,11 @@ opfunc_pre_decr (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_post_incr (OPCODE opdata, /**< operation data */
opfunc_post_incr (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.post_incr.dst;
const T_IDX incr_var_idx = opdata.data.post_incr.var_right;
const idx_t dst_var_idx = opdata.data.post_incr.dst;
const idx_t incr_var_idx = opdata.data.post_incr.var_right;
int_data->pos++;
@@ -532,11 +532,11 @@ opfunc_post_incr (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_post_decr (OPCODE opdata, /**< operation data */
opfunc_post_decr (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.post_decr.dst;
const T_IDX decr_var_idx = opdata.data.post_decr.var_right;
const idx_t dst_var_idx = opdata.data.post_decr.dst;
const idx_t decr_var_idx = opdata.data.post_decr.var_right;
int_data->pos++;
@@ -577,7 +577,7 @@ opfunc_post_decr (OPCODE opdata, /**< operation data */
* The opcode is meta-opcode that is not supposed to be executed.
*/
ecma_completion_value_t
opfunc_reg_var_decl (OPCODE opdata __unused, /**< operation data */
opfunc_reg_var_decl (opcode_t opdata __unused, /**< operation data */
__int_data *int_data __unused) /**< interpreter context */
{
JERRY_UNREACHABLE ();
@@ -593,7 +593,7 @@ opfunc_reg_var_decl (OPCODE opdata __unused, /**< operation data */
* However, ecma_free_completion_value may be called for it, but it is a no-op.
*/
ecma_completion_value_t
opfunc_var_decl (OPCODE opdata, /**< operation data */
opfunc_var_decl (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
ecma_string_t *var_name_string_p = ecma_new_ecma_string_from_lit_index (opdata.data.var_decl.variable_name);
@@ -633,7 +633,7 @@ opfunc_var_decl (OPCODE opdata, /**< operation data */
*/
static ecma_completion_value_t
function_declaration (__int_data *int_data, /**< interpreter context */
T_IDX function_name_lit_idx, /**< identifier of literal with function name */
idx_t function_name_lit_idx, /**< identifier of literal with function name */
ecma_string_t* args_names[], /**< names of arguments */
ecma_length_t args_number) /**< number of arguments */
{
@@ -643,7 +643,7 @@ function_declaration (__int_data *int_data, /**< interpreter context */
const bool is_configurable_bindings = int_data->is_eval_code;
const opcode_counter_t jmp_down_opcode_idx = (opcode_counter_t) (int_data->pos);
OPCODE jmp_down_opcode = read_opcode (jmp_down_opcode_idx);
opcode_t jmp_down_opcode = read_opcode (jmp_down_opcode_idx);
JERRY_ASSERT (jmp_down_opcode.op_idx == __op__idx_jmp_down);
int_data->pos = (opcode_counter_t) (jmp_down_opcode_idx + jmp_down_opcode.data.jmp_down.opcode_count);
@@ -670,7 +670,7 @@ function_declaration (__int_data *int_data, /**< interpreter context */
* returned value must be freed with ecma_free_completion_value.
*/
ecma_completion_value_t
opfunc_func_decl_0 (OPCODE opdata, /**< operation data */
opfunc_func_decl_0 (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
int_data->pos++;
@@ -688,7 +688,7 @@ opfunc_func_decl_0 (OPCODE opdata, /**< operation data */
* returned value must be freed with ecma_free_completion_value.
*/
ecma_completion_value_t
opfunc_func_decl_1 (OPCODE opdata, /**< operation data */
opfunc_func_decl_1 (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
int_data->pos++;
@@ -712,7 +712,7 @@ opfunc_func_decl_1 (OPCODE opdata, /**< operation data */
* returned value must be freed with ecma_free_completion_value.
*/
ecma_completion_value_t
opfunc_func_decl_2 (OPCODE opdata, /**< operation data */
opfunc_func_decl_2 (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
int_data->pos++;
@@ -743,11 +743,11 @@ opfunc_func_decl_2 (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value.
*/
ecma_completion_value_t
opfunc_call_0 (OPCODE opdata, /**< operation data */
opfunc_call_0 (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX func_name_lit_idx = opdata.data.call_0.name_lit_idx;
const T_IDX lhs_var_idx = opdata.data.call_0.lhs;
const idx_t func_name_lit_idx = opdata.data.call_0.name_lit_idx;
const idx_t lhs_var_idx = opdata.data.call_0.lhs;
int_data->pos++;
@@ -789,7 +789,7 @@ opfunc_call_0 (OPCODE opdata, /**< operation data */
* However, ecma_free_completion_value may be called for it, but it is a no-op.
*/
ecma_completion_value_t
opfunc_ret (OPCODE opdata __unused, /**< operation data */
opfunc_ret (opcode_t opdata __unused, /**< operation data */
__int_data *int_data __unused) /**< interpreter context */
{
return ecma_make_completion_value (ECMA_COMPLETION_TYPE_RETURN,
@@ -807,7 +807,7 @@ opfunc_ret (OPCODE opdata __unused, /**< operation data */
* However, ecma_free_completion_value may be called for it, but it is a no-op.
*/
ecma_completion_value_t
opfunc_retval (OPCODE opdata __unused, /**< operation data */
opfunc_retval (opcode_t opdata __unused, /**< operation data */
__int_data *int_data __unused) /**< interpreter context */
{
ecma_completion_value_t ret_value;
@@ -833,12 +833,12 @@ opfunc_retval (OPCODE opdata __unused, /**< operation data */
* returned value must be freed with ecma_free_completion_value.
*/
ecma_completion_value_t
opfunc_prop_getter (OPCODE opdata __unused, /**< operation data */
opfunc_prop_getter (opcode_t opdata __unused, /**< operation data */
__int_data *int_data __unused) /**< interpreter context */
{
const T_IDX lhs_var_idx = opdata.data.prop_getter.lhs;
const T_IDX base_var_idx = opdata.data.prop_getter.obj;
const T_IDX prop_name_var_idx = opdata.data.prop_getter.prop;
const idx_t lhs_var_idx = opdata.data.prop_getter.lhs;
const idx_t base_var_idx = opdata.data.prop_getter.obj;
const idx_t prop_name_var_idx = opdata.data.prop_getter.prop;
int_data->pos++;
@@ -880,12 +880,12 @@ opfunc_prop_getter (OPCODE opdata __unused, /**< operation data */
* returned value must be freed with ecma_free_completion_value.
*/
ecma_completion_value_t
opfunc_prop_setter (OPCODE opdata __unused, /**< operation data */
opfunc_prop_setter (opcode_t opdata __unused, /**< operation data */
__int_data *int_data __unused) /**< interpreter context */
{
const T_IDX base_var_idx = opdata.data.prop_setter.obj;
const T_IDX prop_name_var_idx = opdata.data.prop_setter.prop;
const T_IDX rhs_var_idx = opdata.data.prop_setter.rhs;
const idx_t base_var_idx = opdata.data.prop_setter.obj;
const idx_t prop_name_var_idx = opdata.data.prop_setter.prop;
const idx_t rhs_var_idx = opdata.data.prop_setter.rhs;
int_data->pos++;
@@ -929,7 +929,7 @@ opfunc_prop_setter (OPCODE opdata __unused, /**< operation data */
* However, ecma_free_completion_value may be called for it, but it is a no-op.
*/
ecma_completion_value_t
opfunc_exitval (OPCODE opdata, /**< operation data */
opfunc_exitval (opcode_t opdata, /**< operation data */
__int_data *int_data __unused) /**< interpreter context */
{
JERRY_ASSERT (opdata.data.exitval.status_code == 0
@@ -951,11 +951,11 @@ opfunc_exitval (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_logical_not (OPCODE opdata, /**< operation data */
opfunc_logical_not (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.logical_not.dst;
const T_IDX right_var_idx = opdata.data.logical_not.var_right;
const idx_t dst_var_idx = opdata.data.logical_not.dst;
const idx_t right_var_idx = opdata.data.logical_not.var_right;
int_data->pos++;
@@ -989,12 +989,12 @@ opfunc_logical_not (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_logical_or (OPCODE opdata, /**< operation data */
opfunc_logical_or (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.logical_or.dst;
const T_IDX left_var_idx = opdata.data.logical_or.var_left;
const T_IDX right_var_idx = opdata.data.logical_or.var_right;
const idx_t dst_var_idx = opdata.data.logical_or.dst;
const idx_t left_var_idx = opdata.data.logical_or.var_left;
const idx_t right_var_idx = opdata.data.logical_or.var_right;
int_data->pos++;
@@ -1033,12 +1033,12 @@ opfunc_logical_or (OPCODE opdata, /**< operation data */
* Returned value must be freed with ecma_free_completion_value
*/
ecma_completion_value_t
opfunc_logical_and (OPCODE opdata, /**< operation data */
opfunc_logical_and (opcode_t opdata, /**< operation data */
__int_data *int_data) /**< interpreter context */
{
const T_IDX dst_var_idx = opdata.data.logical_and.dst;
const T_IDX left_var_idx = opdata.data.logical_and.var_left;
const T_IDX right_var_idx = opdata.data.logical_and.var_right;
const idx_t dst_var_idx = opdata.data.logical_and.dst;
const idx_t left_var_idx = opdata.data.logical_and.var_left;
const idx_t right_var_idx = opdata.data.logical_and.var_right;
int_data->pos++;
@@ -1068,4 +1068,35 @@ opfunc_logical_and (OPCODE opdata, /**< operation data */
return ret_value;
} /* opfunc_logical_and */
#define GETOP_DEF_1(a, name, field1) \
opcode_t getop_##name (idx_t arg1) \
{ \
opcode_t opdata; \
opdata.op_idx = __op__idx_##name; \
opdata.data.name.field1 = arg1; \
return opdata; \
}
#define GETOP_DEF_2(a, name, field1, field2) \
opcode_t getop_##name (idx_t arg1, idx_t arg2) \
{ \
opcode_t opdata; \
opdata.op_idx = __op__idx_##name; \
opdata.data.name.field1 = arg1; \
opdata.data.name.field2 = arg2; \
return opdata; \
}
#define GETOP_DEF_3(a, name, field1, field2, field3) \
opcode_t getop_##name (idx_t arg1, idx_t arg2, idx_t arg3) \
{ \
opcode_t opdata; \
opdata.op_idx = __op__idx_##name; \
opdata.data.name.field1 = arg1; \
opdata.data.name.field2 = arg2; \
opdata.data.name.field3 = arg3; \
return opdata; \
}
OP_ARGS_LIST (GETOP_DEF)
+31 -56
View File
@@ -19,9 +19,6 @@
#include "ecma-globals.h"
#include "globals.h"
#define T_IDX uint8_t /** index values */
#define OPCODE __opcode
#define OP_0(action, name) \
__##action (name, void, void, void)
@@ -34,11 +31,8 @@
#define OP_3(action, name, field1, field2, field3) \
__##action (name, field1, field2, field3)
#define __OP_STRUCT_FIELD(name, arg1, arg2, arg3) __op_##name name;
#define __OP_ENUM_FIELD(name, arg1, arg2, arg3) __op__idx_##name ,
#define __OP_FUNC_DECL(name, arg1, arg2, arg3) ecma_completion_value_t opfunc_##name (__opcode, __int_data*);
typedef uint16_t opcode_counter_t;
typedef uint16_t opcode_counter_t; /** opcode counters */
typedef uint8_t idx_t; /** index values */
/**
* Descriptor of assignment's second argument
@@ -60,8 +54,8 @@ typedef struct
ecma_object_t *lex_env_p; /**< current lexical environment */
bool is_strict; /**< is current code execution mode strict? */
bool is_eval_code; /**< is current code executed with eval */
T_IDX min_reg_num; /**< minimum idx used for register identification */
T_IDX max_reg_num; /**< maximum idx used for register identification */
idx_t min_reg_num; /**< minimum idx used for register identification */
idx_t max_reg_num; /**< maximum idx used for register identification */
ecma_value_t *regs_p; /**< register variables */
} __int_data;
@@ -167,101 +161,82 @@ typedef struct
#define OP_DATA_0(action, name) \
typedef struct \
{ \
T_IDX __do_not_use; \
idx_t __do_not_use; \
} __op_##name;
#define OP_DATA_1(action, name, arg1) \
typedef struct \
{ \
T_IDX arg1; \
idx_t arg1; \
} __op_##name;
#define OP_DATA_2(action, name, arg1, arg2) \
typedef struct \
{ \
T_IDX arg1; \
T_IDX arg2; \
idx_t arg1; \
idx_t arg2; \
} __op_##name;
#define OP_DATA_3(action, name, arg1, arg2, arg3) \
typedef struct \
{ \
T_IDX arg1; \
T_IDX arg2; \
T_IDX arg3; \
idx_t arg1; \
idx_t arg2; \
idx_t arg3; \
} __op_##name;
OP_ARGS_LIST (OP_DATA)
#define __OP_STRUCT_FIELD(name, arg1, arg2, arg3) __op_##name name;
typedef struct
{
T_IDX op_idx;
idx_t op_idx;
union
{
OP_LIST (OP_STRUCT_FIELD)
} data;
} __opcode;
} opcode_t;
#undef __OP_STRUCT_FIELD
#define __OP_ENUM_FIELD(name, arg1, arg2, arg3) __op__idx_##name ,
enum __opcode_idx
{
OP_LIST (OP_ENUM_FIELD)
LAST_OP
};
#undef __OP_ENUM_FIELD
#define __OP_FUNC_DECL(name, arg1, arg2, arg3) ecma_completion_value_t opfunc_##name (opcode_t, __int_data*);
OP_LIST (OP_FUNC_DECL)
#undef __OP_FUNC_DECL
typedef ecma_completion_value_t (*opfunc) (__opcode, __int_data *);
typedef ecma_completion_value_t (*opfunc) (opcode_t, __int_data *);
#define GETOP_DECL_0(a, name) \
__opcode getop_##name (void);
opcode_t getop_##name (void);
#define GETOP_DECL_1(a, name, arg1) \
__opcode getop_##name (T_IDX);
opcode_t getop_##name (idx_t);
#define GETOP_DECL_2(a, name, arg1, arg2) \
__opcode getop_##name (T_IDX, T_IDX);
opcode_t getop_##name (idx_t, idx_t);
#define GETOP_DECL_3(a, name, arg1, arg2, arg3) \
__opcode getop_##name (T_IDX, T_IDX, T_IDX);
opcode_t getop_##name (idx_t, idx_t, idx_t);
#define GETOP_DEF_0(a, name) \
__opcode getop_##name (void) \
opcode_t getop_##name (void) \
{ \
__opcode opdata; \
opcode_t opdata; \
opdata.op_idx = __op__idx_##name; \
return opdata; \
}
#define GETOP_DEF_1(a, name, field1) \
__opcode getop_##name (T_IDX arg1) \
{ \
__opcode opdata; \
opdata.op_idx = __op__idx_##name; \
opdata.data.name.field1 = arg1; \
return opdata; \
}
#define GETOP_DEF_2(a, name, field1, field2) \
__opcode getop_##name (T_IDX arg1, T_IDX arg2) \
{ \
__opcode opdata; \
opdata.op_idx = __op__idx_##name; \
opdata.data.name.field1 = arg1; \
opdata.data.name.field2 = arg2; \
return opdata; \
}
#define GETOP_DEF_3(a, name, field1, field2, field3) \
__opcode getop_##name (T_IDX arg1, T_IDX arg2, T_IDX arg3) \
{ \
__opcode opdata; \
opdata.op_idx = __op__idx_##name; \
opdata.data.name.field1 = arg1; \
opdata.data.name.field2 = arg2; \
opdata.data.name.field3 = arg3; \
return opdata; \
}
OP_ARGS_LIST (GETOP_DECL)
#undef GETOP_DECL_0
#undef GETOP_DECL_1
#undef GETOP_DECL_2
#undef GETOP_DECL_3
#endif /* OPCODES_H */