Parser refactoring. Remove deserializer notion.

This commit is contained in:
Andrey Shitov
2015-04-07 13:05:09 +03:00
parent 469ef4e622
commit 7c67606b00
21 changed files with 176 additions and 317 deletions
+1 -1
View File
@@ -30,7 +30,7 @@
#include "ecma-objects-general.h"
#include "ecma-reference.h"
#include "ecma-try-catch-macro.h"
#include "deserializer.h"
#include "serializer.h"
bool is_reg_variable (int_data_t *int_data, idx_t var_idx);
ecma_completion_value_t get_variable_value (int_data_t *, idx_t, bool);
@@ -62,8 +62,9 @@ opfunc_try_block (opcode_t opdata, /**< operation data */
JERRY_ASSERT (next_opcode.op_idx == __op__idx_meta);
JERRY_ASSERT (next_opcode.data.meta.type == OPCODE_META_TYPE_CATCH_EXCEPTION_IDENTIFIER);
const literal_index_t catch_exc_val_var_name_lit_idx = deserialize_lit_id_by_uid (next_opcode.data.meta.data_1,
int_data->pos);
const literal_index_t catch_exc_val_var_name_lit_idx = serializer_get_literal_id_by_uid (
next_opcode.data.meta.data_1,
int_data->pos);
int_data->pos++;
ecma_string_t *catch_exc_var_name_str_p = ecma_new_ecma_string_from_lit_index (catch_exc_val_var_name_lit_idx);
+2 -2
View File
@@ -91,7 +91,7 @@ get_variable_value (int_data_t *int_data, /**< interpreter context */
else
{
ecma_string_t var_name_string;
const literal_index_t lit_id = deserialize_lit_id_by_uid (var_idx, int_data->pos);
const literal_index_t lit_id = serializer_get_literal_id_by_uid (var_idx, int_data->pos);
JERRY_ASSERT (lit_id != INVALID_LITERAL);
ecma_new_ecma_string_on_stack_from_lit_index (&var_name_string, lit_id);
@@ -158,7 +158,7 @@ set_variable_value (int_data_t *int_data, /**< interpreter context */
else
{
ecma_string_t var_name_string;
const literal_index_t lit_id = deserialize_lit_id_by_uid (var_idx, lit_oc);
const literal_index_t lit_id = serializer_get_literal_id_by_uid (var_idx, lit_oc);
JERRY_ASSERT (lit_id != INVALID_LITERAL);
ecma_new_ecma_string_on_stack_from_lit_index (&var_name_string, lit_id);
+2 -1
View File
@@ -96,7 +96,8 @@ fill_params_list (int_data_t *int_data, /**< interpreter context */
JERRY_ASSERT (next_opcode.op_idx == __op__idx_meta);
JERRY_ASSERT (next_opcode.data.meta.type == OPCODE_META_TYPE_VARG);
const literal_index_t param_name_lit_idx = deserialize_lit_id_by_uid (next_opcode.data.meta.data_1, int_data->pos);
const literal_index_t param_name_lit_idx = serializer_get_literal_id_by_uid (next_opcode.data.meta.data_1,
int_data->pos);
params_names [param_index] = ecma_new_ecma_string_from_lit_index (param_name_lit_idx);
+14 -14
View File
@@ -13,11 +13,11 @@
* limitations under the License.
*/
#include "deserializer.h"
#include "jrt.h"
#include "vm.h"
#include "opcodes.h"
#include "opcodes-ecma-support.h"
#include "serializer.h"
#include "vm.h"
/**
* Note:
@@ -98,7 +98,7 @@ opfunc_assignment (opcode_t opdata, /**< operation data */
}
else if (type_value_right == OPCODE_ARG_TYPE_STRING)
{
const literal_index_t lit_id = deserialize_lit_id_by_uid (src_val_descr, int_data->pos);
const literal_index_t lit_id = serializer_get_literal_id_by_uid (src_val_descr, int_data->pos);
ecma_string_t *string_p = ecma_new_ecma_string_from_lit_index (lit_id);
ret_value = set_variable_value (int_data,
@@ -127,8 +127,8 @@ opfunc_assignment (opcode_t opdata, /**< operation data */
{
ecma_number_t *num_p = int_data->tmp_num_p;
const literal_index_t lit_id = deserialize_lit_id_by_uid (src_val_descr, int_data->pos);
const literal lit = deserialize_literal_by_id (lit_id);
const literal_index_t lit_id = serializer_get_literal_id_by_uid (src_val_descr, int_data->pos);
const literal lit = serializer_get_literal_by_id (lit_id);
JERRY_ASSERT (lit.type == LIT_NUMBER);
*num_p = lit.data.num;
@@ -142,8 +142,8 @@ opfunc_assignment (opcode_t opdata, /**< operation data */
{
ecma_number_t *num_p = int_data->tmp_num_p;
const literal_index_t lit_id = deserialize_lit_id_by_uid (src_val_descr, int_data->pos);
const literal lit = deserialize_literal_by_id (lit_id);
const literal_index_t lit_id = serializer_get_literal_id_by_uid (src_val_descr, int_data->pos);
const literal lit = serializer_get_literal_by_id (lit_id);
JERRY_ASSERT (lit.type == LIT_NUMBER);
*num_p = ecma_number_negate (lit.data.num);
@@ -397,8 +397,8 @@ ecma_completion_value_t
opfunc_var_decl (opcode_t opdata, /**< operation data */
int_data_t *int_data) /**< interpreter context */
{
const literal_index_t lit_id = deserialize_lit_id_by_uid (opdata.data.var_decl.variable_name,
int_data->pos);
const literal_index_t lit_id = serializer_get_literal_id_by_uid (opdata.data.var_decl.variable_name,
int_data->pos);
JERRY_ASSERT (lit_id != INVALID_LITERAL);
ecma_string_t *var_name_string_p = ecma_new_ecma_string_from_lit_index (lit_id);
@@ -487,8 +487,8 @@ opfunc_func_decl_n (opcode_t opdata, /**< operation data */
const idx_t function_name_idx = opdata.data.func_decl_n.name_lit_idx;
const ecma_length_t params_number = opdata.data.func_decl_n.arg_list;
literal_index_t function_name_lit_id = deserialize_lit_id_by_uid (function_name_idx,
int_data->pos);
literal_index_t function_name_lit_id = serializer_get_literal_id_by_uid (function_name_idx,
int_data->pos);
int_data->pos++;
@@ -563,7 +563,7 @@ opfunc_func_expr_n (opcode_t opdata, /**< operation data */
{
scope_p = ecma_create_decl_lex_env (int_data->lex_env_p);
const literal_index_t lit_id = deserialize_lit_id_by_uid (function_name_lit_idx, lit_oc);
const literal_index_t lit_id = serializer_get_literal_id_by_uid (function_name_lit_idx, lit_oc);
JERRY_ASSERT (lit_id != INVALID_LITERAL);
function_name_string_p = ecma_new_ecma_string_from_lit_index (lit_id);
@@ -1389,7 +1389,7 @@ evaluate_arg_for_typeof (int_data_t *int_data, /**< interpreter context */
}
else
{
const literal_index_t lit_id = deserialize_lit_id_by_uid (var_idx, int_data->pos);
const literal_index_t lit_id = serializer_get_literal_id_by_uid (var_idx, int_data->pos);
JERRY_ASSERT (lit_id != INVALID_LITERAL);
ecma_string_t *var_name_string_p = ecma_new_ecma_string_from_lit_index (lit_id);
@@ -1505,7 +1505,7 @@ opfunc_delete_var (opcode_t opdata, /**< operation data */
ecma_completion_value_t ret_value;
const literal_index_t lit_id = deserialize_lit_id_by_uid (name_lit_idx, lit_oc);
const literal_index_t lit_id = serializer_get_literal_id_by_uid (name_lit_idx, lit_oc);
JERRY_ASSERT (lit_id != INVALID_LITERAL);
ecma_string_t *name_string_p = ecma_new_ecma_string_from_lit_index (lit_id);
+9 -9
View File
@@ -13,16 +13,16 @@
* limitations under the License.
*/
#include "jrt.h"
#ifdef JERRY_ENABLE_PRETTY_PRINTER
#include <stdarg.h>
#include "pretty-printer.h"
#include "jrt-libc-includes.h"
#include "lexer.h"
#include "deserializer.h"
#include "opcodes-native-call.h"
#include "ecma-helpers.h"
#include "ecma-globals.h"
#include <stdarg.h>
#include "serializer.h"
#define NAME_TO_ID(op) (__op__idx_##op)
@@ -79,7 +79,7 @@ dump_literal (literal lit)
}
void
pp_literals (const literal lits[], literal_index_t size)
pp_literals (const literal *lits, literal_index_t size)
{
printf ("LITERALS %lu:\n", (unsigned long) size);
for (literal_index_t i = 0; i < size; i++)
@@ -160,7 +160,7 @@ var_to_str (opcode_t opcode, literal_index_t lit_ids[], opcode_counter_t oc, uin
}
else
{
return lit_id_to_str (deserialize_lit_id_by_uid (raw.uids[current_arg], oc));
return lit_id_to_str (serializer_get_literal_id_by_uid (raw.uids[current_arg], oc));
}
}
@@ -241,7 +241,7 @@ pp_op_meta (opcode_counter_t oc, op_meta opm, bool rewrite)
{
PP_OP (addition, "%s = %s + %s;");
PP_OP (substraction, "%s = %s - %s;");
PP_OP (division, "%s = %s - %s;");
PP_OP (division, "%s = %s / %s;");
PP_OP (multiplication, "%s = %s * %s;");
PP_OP (remainder, "%s = %s %% %s;");
PP_OP (unary_minus, "%s = -%s;");
@@ -447,7 +447,7 @@ pp_op_meta (opcode_counter_t oc, op_meta opm, bool rewrite)
while ((int16_t) start >= 0 && !found)
{
start--;
switch (deserialize_opcode (start).op_idx)
switch (serializer_get_opcode (start).op_idx)
{
case NAME_TO_ID (call_n):
case NAME_TO_ID (native_call):
@@ -462,7 +462,7 @@ pp_op_meta (opcode_counter_t oc, op_meta opm, bool rewrite)
}
}
}
opcode_t start_op = deserialize_opcode (start);
opcode_t start_op = serializer_get_opcode (start);
switch (start_op.op_idx)
{
case NAME_TO_ID (call_n):
@@ -527,7 +527,7 @@ pp_op_meta (opcode_counter_t oc, op_meta opm, bool rewrite)
}
for (opcode_counter_t counter = start; counter <= oc; counter++)
{
opcode_t meta_op = deserialize_opcode (counter);
opcode_t meta_op = serializer_get_opcode (counter);
switch (meta_op.op_idx)
{
case NAME_TO_ID (meta):