Fix memory corruptions in lexer, which occured while parsing cse.js; remove lexer.log and parser.log files

This commit is contained in:
Ilmir Usmanov
2014-07-25 14:16:29 +04:00
parent c9c26251a4
commit 40007126fa
7 changed files with 26 additions and 50 deletions
+1
View File
@@ -22,6 +22,7 @@ nbproject
*~
js.files
core
vgcore.*
**.orig
# ctags and ID database
+1 -1
View File
@@ -143,7 +143,7 @@ endif
#
CFLAGS_JERRY = $(CFLAGS_WARNINGS) $(CFLAGS_WERROR)
DEFINES_JERRY = -DMEM_HEAP_CHUNK_SIZE=256 -DMEM_HEAP_AREA_SIZE=32768 -DMEM_STATS
DEFINES_JERRY = -DMEM_HEAP_CHUNK_SIZE=$$((256)) -DMEM_HEAP_AREA_SIZE=$$((32768)) -DMEM_STATS
# FIXME:
# Add common-io.c and sensors.c
+1 -20
View File
@@ -88,7 +88,7 @@ num_and_token;
#define MAX_NAMES 100
#define MAX_NUMS 25
static string_and_token seen_names[MAX_NUMS];
static string_and_token seen_names[MAX_NAMES];
static uint8_t seen_names_count = 0;
static num_and_token seen_nums[MAX_NAMES] =
@@ -112,7 +112,6 @@ static const char *token_start;
#define LA(I) (*(buffer + I))
#ifdef __HOST
_FILE *lexer_debug_log;
static void
dump_current_line (void)
@@ -816,10 +815,6 @@ lexer_next_token_private (void)
parser_fatal (ERR_NON_CHAR);
}
#ifdef __HOST
static int i = 0;
#endif /* __HOST */
token
lexer_next_token (void)
{
@@ -836,12 +831,6 @@ lexer_next_token (void)
dump_current_line ();
return tok;
}
if (tok.type == TOK_CLOSE_BRACE)
{
// if (i == 300)
__fprintf (lexer_debug_log, "lexer_next_token(%d): type=%d, data=%d\n", i, tok.type, tok.data.uid);
i++;
}
#endif /* __HOST */
return tok;
}
@@ -849,10 +838,6 @@ lexer_next_token (void)
void
lexer_save_token (token tok)
{
#ifdef __HOST
if (tok.type == TOK_CLOSE_BRACE)
__fprintf (lexer_debug_log, "lexer_save_token(%d): type=%d, data=%d\n", i, tok.type, tok.data.uid);
#endif /* __HOST */
saved_token = tok;
}
@@ -867,10 +852,6 @@ lexer_init( const char *source)
{
saved_token = empty_token;
lexer_set_source( source);
#ifdef __HOST
lexer_debug_log = __fopen ("lexer.log", "w");
#endif /* __HOST */
}
void
+3 -10
View File
@@ -27,10 +27,6 @@ static OPCODE opcode;
static T_IDX opcode_counter = 0;
static T_IDX temp_name_stack[MAX_OPCODES], temp_name_stack_head = 0, max_temp_name;
#ifdef __HOST
_FILE *debug_file;
#endif
static T_IDX parse_expression (void);
static void parse_statement (void);
static T_IDX parse_assignment_expression (void);
@@ -147,13 +143,13 @@ insert_semicolon (void)
do { skip_newlines (); ID = parse_##TYPE (); } while (0)
#define DUMP_VOID_OPCODE(GETOP) \
do { opcode=getop_##GETOP (); serializer_dump_opcode (&opcode); opcode_counter++; } while (0)
do { opcode=getop_##GETOP (); serializer_dump_opcode (opcode); opcode_counter++; } while (0)
#define DUMP_OPCODE(GETOP, ...) \
do { opcode=getop_##GETOP (__VA_ARGS__); serializer_dump_opcode (&opcode); opcode_counter++; } while (0)
do { opcode=getop_##GETOP (__VA_ARGS__); serializer_dump_opcode (opcode); opcode_counter++; } while (0)
#define REWRITE_OPCODE(OC, GETOP, ...) \
do { opcode=getop_##GETOP (__VA_ARGS__); serializer_rewrite_opcode (OC, &opcode); } while (0)
do { opcode=getop_##GETOP (__VA_ARGS__); serializer_rewrite_opcode (OC, opcode); } while (0)
static T_IDX
integer_zero (void)
@@ -1835,9 +1831,6 @@ void
parser_init (void)
{
max_temp_name = temp_name = min_temp_name = lexer_get_reserved_ids_count ();
#ifdef __HOST
debug_file = __fopen ("parser.log", "w");
#endif
}
void
+3 -2
View File
@@ -17,6 +17,7 @@
#define SERIALIZER_H
#include "globals.h"
#include "opcodes.h"
void serializer_init (void);
@@ -24,9 +25,9 @@ uint8_t serializer_dump_strings (const char **, uint8_t);
void serializer_dump_nums (const int32_t *, uint8_t, uint8_t, uint8_t);
void serializer_dump_opcode (const void *);
void serializer_dump_opcode (OPCODE);
void serializer_rewrite_opcode (const uint8_t, const void *);
void serializer_rewrite_opcode (const uint8_t, OPCODE);
void serializer_print_opcodes (void);
+13 -13
View File
@@ -116,32 +116,32 @@ serializer_dump_nums (const int32_t nums[], uint8_t size, uint8_t offset, uint8_
#endif
}
static int opcode_counter = 0;
static int32_t opcode_counter = 0;
void
serializer_dump_opcode (const void *opcode)
serializer_dump_opcode (OPCODE opcode)
{
uint8_t i;
int opcode_num = (int)((char*)opcode)[0];
uint8_t opcode_num = opcode.op_idx;
bytecode_opcodes[opcode_counter] = *((OPCODE*)opcode);
bytecode_opcodes[opcode_counter] = opcode;
__printf ("%03d: %20s ", opcode_counter++, opcode_names[opcode_num]);
for (i = 1; i < opcode_sizes[opcode_num]; i++)
__printf ("%4d ", ((char*)opcode)[i]);
__printf ("%4d ", ((uint8_t*)&opcode)[i]);
__printf ("\n");
}
void
serializer_rewrite_opcode (const uint8_t loc, const void *opcode)
serializer_rewrite_opcode (const uint8_t loc, OPCODE opcode)
{
uint8_t i;
int opcode_num = (int)((char*)opcode)[0];
uint8_t opcode_num = opcode.op_idx;
bytecode_opcodes[loc] = *((OPCODE*)opcode);
bytecode_opcodes[loc] = opcode;
__printf ("%03d: %20s ", loc, opcode_names[opcode_num]);
for (i = 1; i < opcode_sizes[opcode_num]; i++)
__printf ("%4d ", ((char*)opcode)[i]);
__printf ("%4d ", ((uint8_t*)&opcode)[i]);
__printf ("// REWRITE\n");
}
@@ -149,9 +149,9 @@ serializer_rewrite_opcode (const uint8_t loc, const void *opcode)
void
serializer_print_opcodes (void)
{
int loc = -1, i;
int32_t loc = -1, i;
OPCODE* opcode;
int opcode_num;
uint8_t opcode_num;
__printf ("AFTER OPTIMIZER:\n");
@@ -160,11 +160,11 @@ serializer_print_opcodes (void)
loc++;
opcode = bytecode_opcodes + loc;
opcode_num = (int)((char*)opcode)[0];
opcode_num = opcode->op_idx;
__printf ("%03d: %20s ", loc, opcode_names[opcode_num]);
for (i = 1; i < opcode_sizes[opcode_num]; i++)
__printf ("%4d ", ((char*)opcode)[i]);
__printf ("%4d ", ((uint8_t*)opcode)[i]);
__printf ("\n");
}
while (opcode->op_idx != __op__idx_exitval);
+4 -4
View File
@@ -94,15 +94,15 @@ serializer_dump_nums (const int32_t nums[], uint8_t size, uint8_t offset, uint8_
static int opcode_counter = 0;
void
serializer_dump_opcode (const void *opcode)
serializer_dump_opcode (OPCODE opcode)
{
bytecode_opcodes[opcode_counter++] = *((OPCODE*)opcode);
bytecode_opcodes[opcode_counter++] = opcode;
}
void
serializer_rewrite_opcode (const uint8_t loc, const void *opcode)
serializer_rewrite_opcode (const uint8_t loc, OPCODE opcode)
{
bytecode_opcodes[loc] = *((OPCODE*)opcode);
bytecode_opcodes[loc] = opcode;
}
void