summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorCremno <[email protected]>2013-09-03 21:15:14 +0200
committerCremno <[email protected]>2013-09-03 21:15:14 +0200
commit501df71833fd33f4dfacc98ed5c0dbcdd2820795 (patch)
treeb7335b8d9009c38a95213ce3343ea989030d935c
parent2fe64f24f8564be3219e6a9bd89c3ad33f80804d (diff)
downloadmruby-501df71833fd33f4dfacc98ed5c0dbcdd2820795.tar.gz
mruby-501df71833fd33f4dfacc98ed5c0dbcdd2820795.zip
MSVC: compilation works again (+minor style fixes)
-rw-r--r--include/mruby/debug.h34
-rw-r--r--src/debug.c86
-rw-r--r--src/dump.c85
-rw-r--r--src/load.c56
-rw-r--r--src/parse.y13
5 files changed, 158 insertions, 116 deletions
diff --git a/include/mruby/debug.h b/include/mruby/debug.h
index ca657bf17..2e358a4ca 100644
--- a/include/mruby/debug.h
+++ b/include/mruby/debug.h
@@ -1,3 +1,9 @@
+/*
+** mruby/debug.h - mruby debug info
+**
+** See Copyright Notice in mruby.h
+*/
+
#ifndef MRUBY_DEBUG_H
#define MRUBY_DEBUG_H
@@ -5,9 +11,6 @@
extern "C" {
#endif
-#include <stdint.h>
-#include "mruby/value.h"
-
typedef enum mrb_debug_line_type {
mrb_debug_line_ary = 0,
mrb_debug_line_flat_map = 1
@@ -20,43 +23,40 @@ typedef struct mrb_irep_debug_info_line {
typedef struct mrb_irep_debug_info_file {
uint32_t start_pos;
- char const* filename;
+ const char *filename;
mrb_sym filename_sym;
uint32_t line_entry_count;
mrb_debug_line_type line_type;
union {
- void* line_ptr;
- mrb_irep_debug_info_line* line_flat_map;
- uint16_t* line_ary;
+ void *line_ptr;
+ mrb_irep_debug_info_line *line_flat_map;
+ uint16_t *line_ary;
};
} mrb_irep_debug_info_file;
typedef struct mrb_irep_debug_info {
uint32_t pc_count;
uint16_t flen;
- mrb_irep_debug_info_file** files;
+ mrb_irep_debug_info_file **files;
} mrb_irep_debug_info;
-struct mrb_irep;
-struct mrb_state;
-
/*
* get line from irep's debug info and program counter
* @return returns NULL if not found
*/
-char const* mrb_debug_get_filename(struct mrb_irep* irep, uint32_t pc);
+const char *mrb_debug_get_filename(mrb_irep *irep, uint32_t pc);
/*
* get line from irep's debug info and program counter
* @return returns -1 if not found
*/
-int32_t mrb_debug_get_line(struct mrb_irep* irep, uint32_t pc);
+int32_t mrb_debug_get_line(mrb_irep *irep, uint32_t pc);
-mrb_irep_debug_info_file* mrb_debug_info_append_file(
- struct mrb_state* mrb, struct mrb_irep* irep,
+mrb_irep_debug_info_file *mrb_debug_info_append_file(
+ mrb_state *mrb, mrb_irep *irep,
uint32_t start_pos, uint32_t end_pos);
-mrb_irep_debug_info* mrb_debug_info_alloc(struct mrb_state* mrb, struct mrb_irep* irep);
-void mrb_debug_info_free(struct mrb_state* mrb, mrb_irep_debug_info* d);
+mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep);
+void mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d);
#if defined(__cplusplus)
} /* extern "C" { */
diff --git a/src/debug.c b/src/debug.c
index 95e5906d4..98b3338ff 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -1,21 +1,21 @@
-#include "mruby/debug.h"
-
+#include <string.h>
#include "mruby.h"
#include "mruby/irep.h"
+#include "mruby/debug.h"
-#include <string.h>
-
-static mrb_irep_debug_info_file*
-get_file(mrb_irep_debug_info* info, uint32_t const pc)
+static mrb_irep_debug_info_file *
+get_file(mrb_irep_debug_info *info, uint32_t pc)
{
- if(pc >= info->pc_count) { return NULL; }
+ mrb_irep_debug_info_file **ret;
+ int32_t count;
+ if(pc >= info->pc_count) { return NULL; }
// get upper bound
- mrb_irep_debug_info_file** ret = info->files;
- int32_t count = info->flen;
+ ret = info->files;
+ count = info->flen;
while (count > 0) {
- int32_t const step = count / 2;
- mrb_irep_debug_info_file** const it = ret + step;
+ int32_t step = count / 2;
+ mrb_irep_debug_info_file **it = ret + step;
if (!(pc < (*it)->start_pos)) {
ret = it + 1;
count -= step + 1;
@@ -33,7 +33,7 @@ get_file(mrb_irep_debug_info* info, uint32_t const pc)
}
static mrb_debug_line_type
-select_line_type(uint16_t const* lines, size_t lines_len)
+select_line_type(const uint16_t *lines, size_t lines_len)
{
size_t line_count = 0;
int prev_line = -1;
@@ -48,7 +48,7 @@ select_line_type(uint16_t const* lines, size_t lines_len)
}
char const*
-mrb_debug_get_filename(mrb_irep* irep, uint32_t pc)
+mrb_debug_get_filename(mrb_irep *irep, uint32_t pc)
{
if (irep && pc < irep->ilen) {
mrb_irep_debug_info_file* f = NULL;
@@ -61,7 +61,7 @@ mrb_debug_get_filename(mrb_irep* irep, uint32_t pc)
}
int32_t
-mrb_debug_get_line(mrb_irep* irep, uint32_t const pc)
+mrb_debug_get_line(mrb_irep *irep, uint32_t pc)
{
if (irep && pc < irep->ilen) {
mrb_irep_debug_info_file* f = NULL;
@@ -76,11 +76,11 @@ mrb_debug_get_line(mrb_irep* irep, uint32_t const pc)
case mrb_debug_line_flat_map: {
// get upper bound
- mrb_irep_debug_info_line* ret = f->line_flat_map;
- int32_t count = f->line_entry_count;
+ mrb_irep_debug_info_line *ret = f->line_flat_map;
+ uint32_t count = f->line_entry_count;
while (count > 0) {
- int32_t const step = count / 2;
- mrb_irep_debug_info_line* const it = ret + step;
+ int32_t step = count / 2;
+ mrb_irep_debug_info_line *it = ret + step;
if (!(pc < it->start_pos)) {
ret = it + 1;
count -= step + 1;
@@ -89,7 +89,7 @@ mrb_debug_get_line(mrb_irep* irep, uint32_t const pc)
--ret;
- mrb_assert((ret - f->line_flat_map) < f->line_entry_count);
+ mrb_assert((ret - f->line_flat_map) < (ptrdiff_t)f->line_entry_count);
mrb_assert(ret->start_pos <= pc &&
pc < (((ret + 1 - f->line_flat_map) < f->line_entry_count)
? (ret+1)->start_pos : irep->debug_info->pc_count));
@@ -102,49 +102,56 @@ mrb_debug_get_line(mrb_irep* irep, uint32_t const pc)
return -1;
}
-mrb_irep_debug_info*
-mrb_debug_info_alloc(mrb_state* mrb, mrb_irep* irep)
+mrb_irep_debug_info *
+mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep)
{
- static mrb_irep_debug_info const initial = { 0, 0, NULL };
- mrb_assert(!irep->debug_info);
+ static const mrb_irep_debug_info initial = { 0, 0, NULL };
+ mrb_irep_debug_info *ret;
- mrb_irep_debug_info* const ret = (mrb_irep_debug_info*)mrb_malloc(mrb, sizeof(mrb_irep_debug_info));
+ mrb_assert(!irep->debug_info);
+ ret = (mrb_irep_debug_info *)mrb_malloc(mrb, sizeof(*ret));
*ret = initial;
irep->debug_info = ret;
return ret;
}
-mrb_irep_debug_info_file*
-mrb_debug_info_append_file(mrb_state* mrb, mrb_irep* irep,
- uint32_t const start_pos, uint32_t const end_pos)
+mrb_irep_debug_info_file *
+mrb_debug_info_append_file(mrb_state *mrb, mrb_irep *irep,
+ uint32_t start_pos, uint32_t end_pos)
{
+ mrb_irep_debug_info *info;
+ mrb_irep_debug_info_file *ret;
+ uint32_t file_pc_count;
+ size_t fn_len;
+ size_t len;
+ uint32_t i;
+
if (!irep->debug_info) { return NULL; }
mrb_assert(irep->filename);
mrb_assert(irep->lines);
- mrb_irep_debug_info* info = irep->debug_info;
+ info = irep->debug_info;
if (info->flen > 0 && strcmp(irep->filename, info->files[info->flen - 1]->filename) == 0) {
return NULL;
}
- mrb_irep_debug_info_file* const ret =
- (mrb_irep_debug_info_file*)mrb_malloc(mrb, sizeof(mrb_irep_debug_info_file));
+ ret = (mrb_irep_debug_info_file *)mrb_malloc(mrb, sizeof(*ret));
info->files =
(mrb_irep_debug_info_file*)info->files
? mrb_realloc(mrb, info->files, sizeof(mrb_irep_debug_info_file*) * (info->flen + 1))
: mrb_malloc(mrb, sizeof(mrb_irep_debug_info_file*));
info->files[info->flen++] = ret;
- uint32_t const file_pc_count = end_pos - start_pos;
+ file_pc_count = end_pos - start_pos;
ret->start_pos = start_pos;
info->pc_count = end_pos;
- size_t const fn_len = strlen(irep->filename);
+ fn_len = strlen(irep->filename);
ret->filename_sym = mrb_intern2(mrb, irep->filename, fn_len);
- size_t len = 0;
+ len = 0;
ret->filename = mrb_sym2name_len(mrb, ret->filename_sym, &len);
ret->line_type = select_line_type(irep->lines + start_pos, end_pos - start_pos);
@@ -154,24 +161,24 @@ mrb_debug_info_append_file(mrb_state* mrb, mrb_irep* irep,
case mrb_debug_line_ary:
ret->line_entry_count = file_pc_count;
ret->line_ary = mrb_malloc(mrb, sizeof(uint16_t) * file_pc_count);
- uint32_t i;
for(i = 0; i < file_pc_count; ++i) {
ret->line_ary[i] = irep->lines[start_pos + i];
}
break;
case mrb_debug_line_flat_map: {
+ uint16_t prev_line = 0;
+ mrb_irep_debug_info_line m;
ret->line_flat_map = mrb_malloc(mrb, sizeof(mrb_irep_debug_info_line) * 1);
ret->line_entry_count = 0;
- uint16_t prev_line = 0;
- uint32_t i;
for(i = 0; i < file_pc_count; ++i) {
if(irep->lines[start_pos + i] == prev_line) { continue; }
ret->line_flat_map = mrb_realloc(
mrb, ret->line_flat_map,
sizeof(mrb_irep_debug_info_line) * (ret->line_entry_count + 1));
- mrb_irep_debug_info_line const m = { start_pos + i, irep->lines[start_pos + i] };
+ m.start_pos = start_pos + i;
+ m.line = irep->lines[start_pos + i];
ret->line_flat_map[ret->line_entry_count] = m;
// update
@@ -187,11 +194,12 @@ mrb_debug_info_append_file(mrb_state* mrb, mrb_irep* irep,
}
void
-mrb_debug_info_free(mrb_state* mrb, mrb_irep_debug_info* d)
+mrb_debug_info_free(mrb_state *mrb, mrb_irep_debug_info *d)
{
+ uint32_t i;
+
if(!d) { return; }
- uint32_t i;
for(i = 0; i < d->flen; ++i) {
mrb_assert(d->files[i]);
mrb_free(mrb, d->files[i]->line_ptr);
diff --git a/src/dump.c b/src/dump.c
index 0e92e75bb..73c3ed553 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -390,14 +390,14 @@ mrb_write_section_lineno(mrb_state *mrb, size_t start_index, uint8_t *bin)
}
static size_t
-get_debug_record_size(mrb_state* mrb, mrb_irep *irep) {
- (void)mrb;
+get_debug_record_size(mrb_state *mrb, mrb_irep *irep)
+{
size_t ret = 0;
+ uint32_t f_idx;
ret += sizeof(uint32_t); // record size
ret += sizeof(uint16_t); // file count
- uint32_t f_idx;
for(f_idx = 0; f_idx < irep->debug_info->flen; ++f_idx) {
mrb_irep_debug_info_file const* file = irep->debug_info->files[f_idx];
@@ -424,8 +424,10 @@ get_debug_record_size(mrb_state* mrb, mrb_irep *irep) {
}
static int
-find_filename_index(mrb_sym const* ary, size_t ary_len, mrb_sym s) {
- mrb_int i;
+find_filename_index(const mrb_sym *ary, size_t ary_len, mrb_sym s)
+{
+ size_t i;
+
for(i = 0; i < ary_len; ++i) {
if(ary[i] == s) { return i; }
}
@@ -433,20 +435,24 @@ find_filename_index(mrb_sym const* ary, size_t ary_len, mrb_sym s) {
}
static int
-write_debug_record(mrb_state* mrb, mrb_irep *irep, uint8_t * const bin, mrb_sym const* filenames, size_t filenames_len)
+write_debug_record(mrb_state *mrb, mrb_irep *irep, uint8_t *bin, mrb_sym const* filenames, size_t filenames_len)
{
- uint8_t *cur = bin + sizeof(uint32_t); // skip record size
+ uint8_t *cur;
+ uint32_t f_idx;
+ size_t ret;
+ cur = bin + sizeof(uint32_t); // skip record size
cur += uint16_to_bin(irep->debug_info->flen, cur); // file count
- uint32_t f_idx;
+
for(f_idx = 0; f_idx < irep->debug_info->flen; ++f_idx) {
- mrb_irep_debug_info_file const* file = irep->debug_info->files[f_idx];
+ int filename_idx;
+ const mrb_irep_debug_info_file *file = irep->debug_info->files[f_idx];
// position
cur += uint32_to_bin(file->start_pos, cur);
// filename index
- int const filename_idx = find_filename_index(filenames, filenames_len,
+ filename_idx = find_filename_index(filenames, filenames_len,
file->filename_sym);
mrb_assert(filename_idx != -1);
cur += uint16_to_bin(filename_idx, cur);
@@ -474,7 +480,7 @@ write_debug_record(mrb_state* mrb, mrb_irep *irep, uint8_t * const bin, mrb_sym
}
}
- size_t const ret = cur - bin;
+ ret = cur - bin;
uint32_to_bin(ret, bin);
mrb_assert((cur - bin) == (int)get_debug_record_size(mrb, irep));
@@ -483,32 +489,38 @@ write_debug_record(mrb_state* mrb, mrb_irep *irep, uint8_t * const bin, mrb_sym
}
static int
-mrb_write_section_debug(mrb_state* mrb, size_t start_index, uint8_t *cur)
+mrb_write_section_debug(mrb_state *mrb, size_t start_index, uint8_t *cur)
{
uint32_t section_size = 0;
- uint8_t* const bin = cur;
+ const uint8_t *bin = cur;
+ struct rite_section_debug_header *header;
+ mrb_sym *filenames;
+ size_t filenames_len;
+ uint8_t *filenames_len_out;
+ size_t irep_i;
+ size_t file_i;
+ uint16_t fn_len;
+ size_t i;
if (mrb == NULL || start_index >= mrb->irep_len || cur == NULL) {
return MRB_DUMP_INVALID_ARGUMENT;
}
- struct rite_section_debug_header* header = (struct rite_section_debug_header*)bin;
+ header = (struct rite_section_debug_header *)bin;
cur += sizeof(struct rite_section_debug_header);
section_size += sizeof(struct rite_section_debug_header);
// filename table
- mrb_sym* filenames = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym*) * 1);
- size_t filenames_len = 0;
- uint8_t* const filenames_len_out = cur;
+ filenames = (mrb_sym *)mrb_malloc(mrb, sizeof(mrb_sym *) * 1);
+ filenames_len = 0;
+ filenames_len_out = cur;
cur += sizeof(uint16_t);
section_size += sizeof(uint16_t);
- size_t irep_i;
for (irep_i = start_index; irep_i < mrb->irep_len; ++irep_i) {
- mrb_irep_debug_info const* debug_info = mrb->irep[irep_i]->debug_info;
+ mrb_irep_debug_info *debug_info = mrb->irep[irep_i]->debug_info;
- size_t file_i;
for(file_i = 0; file_i < debug_info->flen; ++file_i) {
- mrb_irep_debug_info_file const* file = debug_info->files[file_i];
+ mrb_irep_debug_info_file *file = debug_info->files[file_i];
if(find_filename_index(filenames, filenames_len, file->filename_sym) != -1) continue;
// register filename
@@ -516,7 +528,7 @@ mrb_write_section_debug(mrb_state* mrb, size_t start_index, uint8_t *cur)
filenames[filenames_len - 1] = file->filename_sym;
// filename
- uint16_t const fn_len = strlen(file->filename);
+ fn_len = (uint16_t)strlen(file->filename);
cur += uint16_to_bin(fn_len, cur);
memcpy(cur, file->filename, fn_len);
cur += fn_len;
@@ -527,7 +539,6 @@ mrb_write_section_debug(mrb_state* mrb, size_t start_index, uint8_t *cur)
uint16_to_bin(filenames_len, filenames_len_out);
// records
- size_t i;
for (i = start_index; i < mrb->irep_len; ++i) {
uint32_t rlen = write_debug_record(mrb, mrb->irep[i], cur, filenames, filenames_len);
cur += rlen;
@@ -545,9 +556,9 @@ mrb_write_section_debug(mrb_state* mrb, size_t start_index, uint8_t *cur)
}
static int
-write_rite_binary_header(mrb_state *mrb, size_t binary_size, uint8_t* bin)
+write_rite_binary_header(mrb_state *mrb, size_t binary_size, uint8_t *bin)
{
- struct rite_binary_header *header = (struct rite_binary_header*)bin;
+ struct rite_binary_header *header = (struct rite_binary_header *)bin;
uint16_t crc;
size_t offset;
@@ -564,7 +575,8 @@ write_rite_binary_header(mrb_state *mrb, size_t binary_size, uint8_t* bin)
return MRB_DUMP_OK;
}
-mrb_bool is_debug_info_defined(mrb_state* mrb, size_t const start_index) {
+mrb_bool is_debug_info_defined(mrb_state *mrb, size_t const start_index)
+{
size_t i;
for (i = start_index; i < mrb->irep_len; ++i) {
if (!mrb->irep[i]->debug_info) { return 0; }
@@ -598,28 +610,33 @@ mrb_dump_irep(mrb_state *mrb, size_t start_index, int debug_info, uint8_t **bin,
/* DEBUG section size */
if (debug_info) {
if (debug_info_defined) {
+ mrb_sym *filenames;
+ size_t filenames_len;
+ size_t irep_i;
+ size_t file_i;
+
section_lineno_size += sizeof(struct rite_section_debug_header);
// filename table
- mrb_sym* filenames = mrb_malloc(mrb, sizeof(mrb_sym*) + 1);
- size_t filenames_len = 0;
+ filenames = (mrb_sym *)mrb_malloc(mrb, sizeof(mrb_sym *) + 1);
+ filenames_len = 0;
// filename table size
section_lineno_size += sizeof(uint16_t);
- size_t irep_i;
for (irep_i = start_index; irep_i < mrb->irep_len; ++irep_i) {
- mrb_irep_debug_info const* di = mrb->irep[irep_i]->debug_info;
+ mrb_irep_debug_info *di = mrb->irep[irep_i]->debug_info;
- size_t file_i;
for(file_i = 0; file_i < di->flen; ++file_i) {
- mrb_irep_debug_info_file const* file = di->files[file_i];
+ mrb_irep_debug_info_file *file;
+ size_t filename_len;
+
+ file = di->files[file_i];
if(find_filename_index(filenames, filenames_len, file->filename_sym) != -1) continue;
// register filename
- filenames = (mrb_sym*)mrb_realloc(mrb, filenames, sizeof(mrb_sym*) * ++filenames_len);
+ filenames = (mrb_sym *)mrb_realloc(mrb, filenames, sizeof(mrb_sym*) * ++filenames_len);
filenames[filenames_len - 1] = file->filename_sym;
// filename
- size_t filename_len;
mrb_sym2name_len(mrb, file->filename_sym, &filename_len);
section_lineno_size += sizeof(uint16_t) + filename_len;
}
diff --git a/src/load.c b/src/load.c
index d12942b39..53f93e74d 100644
--- a/src/load.c
+++ b/src/load.c
@@ -300,51 +300,60 @@ error_exit:
return result;
}
-static int read_rite_debug_record(mrb_state* mrb, uint8_t const *start, size_t irepno, uint32_t *len, mrb_sym const* filenames, size_t filenames_len) {
- uint8_t const* bin = start;
-
- mrb_irep* const irep = mrb->irep[irepno];
+static int
+read_rite_debug_record(mrb_state *mrb, const uint8_t *start, size_t irepno, uint32_t *len, const mrb_sym *filenames, size_t filenames_len)
+{
+ const uint8_t *bin = start;
+ mrb_irep *irep = mrb->irep[irepno];
+ size_t record_size;
+ uint16_t f_idx;
if(irep->debug_info) { return MRB_DUMP_INVALID_IREP; }
irep->debug_info = (mrb_irep_debug_info*)mrb_malloc(mrb, sizeof(mrb_irep_debug_info));
irep->debug_info->pc_count = irep->ilen;
- size_t const record_size = bin_to_uint32(bin); bin += sizeof(uint32_t);
+ record_size = bin_to_uint32(bin);
+ bin += sizeof(uint32_t);
irep->debug_info->flen = bin_to_uint16(bin);
irep->debug_info->files = (mrb_irep_debug_info_file**)mrb_malloc(mrb, sizeof(mrb_irep_debug_info*) * irep->debug_info->flen);
bin += sizeof(uint16_t);
- uint16_t f_idx;
for (f_idx = 0; f_idx < irep->debug_info->flen; ++f_idx) {
- mrb_irep_debug_info_file* const file = (mrb_irep_debug_info_file*)mrb_malloc(mrb, sizeof(mrb_irep_debug_info_file));
+ mrb_irep_debug_info_file *file;
+ uint16_t filename_idx;
+ size_t len;
+
+ file = (mrb_irep_debug_info_file *)mrb_malloc(mrb, sizeof(*file));
irep->debug_info->files[f_idx] = file;
file->start_pos = bin_to_uint32(bin); bin += sizeof(uint32_t);
// filename
- uint16_t const filename_idx = bin_to_uint16(bin);
+ filename_idx = bin_to_uint16(bin);
bin += sizeof(uint16_t);
mrb_assert(filename_idx < filenames_len);
file->filename_sym = filenames[filename_idx];
- size_t len = 0;
+ len = 0;
file->filename = mrb_sym2name_len(mrb, file->filename_sym, &len);
file->line_entry_count = bin_to_uint32(bin); bin += sizeof(uint32_t);
file->line_type = bin_to_uint8(bin); bin += sizeof(uint8_t);
switch(file->line_type) {
case mrb_debug_line_ary: {
- file->line_ary = mrb_malloc(mrb, sizeof(uint16_t) * file->line_entry_count);
size_t l;
+
+ file->line_ary = (uint16_t *)mrb_malloc(mrb, sizeof(uint16_t) * file->line_entry_count);
for(l = 0; l < file->line_entry_count; ++l) {
file->line_ary[l] = bin_to_uint16(bin); bin += sizeof(uint16_t);
}
} break;
case mrb_debug_line_flat_map: {
- file->line_flat_map = mrb_malloc(mrb, sizeof(mrb_irep_debug_info_line) * file->line_entry_count);
size_t l;
+
+ file->line_flat_map = mrb_malloc(mrb, sizeof(mrb_irep_debug_info_line) * file->line_entry_count);
for(l = 0; l < file->line_entry_count; ++l) {
file->line_flat_map[l].start_pos = bin_to_uint32(bin); bin += sizeof(uint32_t);
file->line_flat_map[l].line = bin_to_uint16(bin); bin += sizeof(uint16_t);
@@ -365,24 +374,29 @@ static int read_rite_debug_record(mrb_state* mrb, uint8_t const *start, size_t i
}
static int
-read_rite_section_debug(mrb_state* mrb, const uint8_t* start, size_t sirep)
+read_rite_section_debug(mrb_state *mrb, const uint8_t *start, size_t sirep)
{
- uint8_t const* bin = start;
- struct rite_section_debug_header const* header = (struct rite_section_debug_header const*)bin;
- bin += sizeof(struct rite_section_debug_header);
+ const uint8_t *bin;
+ struct rite_section_debug_header *header;
uint16_t i;
-
int result;
+ uint16_t nirep;
+ size_t filenames_len;
+ mrb_sym *filenames;
+
+ bin = start;
+ header = (struct rite_section_debug_header *)bin;
+ bin += sizeof(struct rite_section_debug_header);
- uint16_t const nirep = bin_to_uint16(header->nirep);
+ nirep = bin_to_uint16(header->nirep);
- size_t const filenames_len = bin_to_uint16(bin);
+ filenames_len = bin_to_uint16(bin);
bin += sizeof(uint16_t);
- mrb_sym* filenames = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym*) * filenames_len);
+ filenames = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym*) * filenames_len);
for(i = 0; i < filenames_len; ++i) {
- uint16_t const f_len = bin_to_uint16(bin);
+ uint16_t f_len = bin_to_uint16(bin);
bin += sizeof(uint16_t);
- filenames[i] = mrb_intern2(mrb, (char const*)bin, f_len);
+ filenames[i] = mrb_intern2(mrb, (const char *)bin, f_len);
bin += f_len;
}
diff --git a/src/parse.y b/src/parse.y
index 23f201d89..dfa717ad2 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -5185,14 +5185,17 @@ mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*func)(struct mrb_parser
}
void
-mrb_parser_set_filename(struct mrb_parser_state* p, char const* f)
+mrb_parser_set_filename(struct mrb_parser_state *p, const char *f)
{
- mrb_sym const sym = mrb_intern(p->mrb, f);
+ mrb_sym sym;
size_t len;
+ size_t i;
+ mrb_sym* new_table;
+
+ sym = mrb_intern_cstr(p->mrb, f);
p->filename = mrb_sym2name_len(p->mrb, sym, &len);
p->lineno = (p->filename_table_length > 0)? 0 : 1;
-
- size_t i;
+
for(i = 0; i < p->filename_table_length; ++i) {
if(p->filename_table[i] == sym) {
p->current_filename_index = i;
@@ -5202,7 +5205,7 @@ mrb_parser_set_filename(struct mrb_parser_state* p, char const* f)
p->current_filename_index = p->filename_table_length++;
- mrb_sym* const new_table = parser_palloc(p, sizeof(mrb_sym) * p->filename_table_length);
+ new_table = parser_palloc(p, sizeof(mrb_sym) * p->filename_table_length);
if (p->filename_table) {
memcpy(new_table, p->filename_table, sizeof(mrb_sym) * p->filename_table_length);
}