summaryrefslogtreecommitdiffhomepage
path: root/src/debug.c
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 /src/debug.c
parent2fe64f24f8564be3219e6a9bd89c3ad33f80804d (diff)
downloadmruby-501df71833fd33f4dfacc98ed5c0dbcdd2820795.tar.gz
mruby-501df71833fd33f4dfacc98ed5c0dbcdd2820795.zip
MSVC: compilation works again (+minor style fixes)
Diffstat (limited to 'src/debug.c')
-rw-r--r--src/debug.c86
1 files changed, 47 insertions, 39 deletions
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);