This commit is contained in:
koba-e964 2015-07-16 21:39:28 +09:00
commit d01b72835d
12 changed files with 26 additions and 22 deletions

View File

@ -7,12 +7,14 @@ addons:
apt:
packages:
- gcc-multilib
# - valgrind
env:
- CFLAGS="-m32"
- CFLAGS="-m64"
script:
- perl --version
- make test
# - make test-contrib TEST_RUNNER="valgrind -q --leak-check=full --dsymutil=yes --error-exitcode=1 bin/picrin"
- make clean
- make debug
- make test

View File

@ -15,6 +15,8 @@ CONTRIB_INITS =
CONTRIB_TESTS =
CONTRIB_DOCS = $(wildcard contrib/*/docs/*.rst)
TEST_RUNNER = bin/picrin
CFLAGS += -I./extlib/benz/include -Wall -Wextra
LDFLAGS += -lm
@ -23,11 +25,11 @@ prefix = /usr/local
all: CFLAGS += -O2 -DNDEBUG=1
all: bin/picrin
include $(sort $(wildcard contrib/*/nitro.mk))
debug: CFLAGS += -O0 -g
debug: bin/picrin
include $(sort $(wildcard contrib/*/nitro.mk))
bin/picrin: $(PICRIN_OBJS) $(CONTRIB_OBJS) lib/libbenz.a
$(CC) $(CFLAGS) -o $@ $(PICRIN_OBJS) $(CONTRIB_OBJS) lib/libbenz.a $(LDFLAGS)

View File

@ -3,4 +3,4 @@ CONTRIB_LIBS += $(wildcard contrib/10.macro/*.scm)
CONTRIB_TESTS += test-macro
test-macro: bin/picrin
bin/picrin contrib/10.macro/t/ir-macro.scm
$(TEST_RUNNER) contrib/10.macro/t/ir-macro.scm

View File

@ -27,5 +27,5 @@ CONTRIB_TESTS += test-r7rs
test-r7rs: bin/picrin
for test in `ls contrib/20.r7rs/t/*.scm`; do \
bin/picrin "$$test"; \
$(TEST_RUNNER) "$$test"; \
done

View File

@ -3,5 +3,5 @@ CONTRIB_TESTS += test-optional
test-optional: bin/picrin
for test in `ls contrib/30.optional/t/*.scm`; do \
bin/picrin $$test; \
$(TEST_RUNNER) $$test; \
done

View File

@ -4,5 +4,5 @@ CONTRIB_TESTS += test-random
test-random: bin/picrin
for test in `ls contrib/30.random/t/*.scm`; do \
bin/picrin $$test; \
$(TEST_RUNNER) $$test; \
done

View File

@ -12,5 +12,5 @@ contrib/src/readline.o: contrib/src/readline.c
test-readline: bin/picrin
for test in `ls contrib/30.readline/t/*.scm`; do \
bin/picrin $$test; \
$(TEST_RUNNER) $$test; \
done

View File

@ -4,5 +4,5 @@ CONTRIB_TESTS += test-regexp
test-regexp: bin/picrin
for test in `ls contrib/30.regexp/t/*.scm`; do \
bin/picrin $$test; \
$(TEST_RUNNER) $$test; \
done

View File

@ -19,5 +19,5 @@ CONTRIB_TESTS += test-srfi
test-srfi: bin/picrin
for test in `ls contrib/40.srfi/t/*.scm`; do \
bin/picrin "$$test"; \
$(TEST_RUNNER) "$$test"; \
done

View File

@ -3,5 +3,5 @@ CONTRIB_TESTS += test-for
test-for: bin/picrin
for test in `ls contrib/50.for/t/*.scm`; do \
bin/picrin "$$test"; \
$(TEST_RUNNER) "$$test"; \
done

View File

@ -3,4 +3,4 @@ CONTRIB_LIBS += $(wildcard contrib/90.array/*.scm)
CONTRIB_TESTS += test-array
test-array: bin/picrin
bin/picrin contrib/90.array/t/array.scm
$(TEST_RUNNER) contrib/90.array/t/array.scm

View File

@ -215,25 +215,25 @@ heap_free(pic_state *pic, void *ap)
static void
heap_morecore(pic_state *pic)
{
union header *up, *np;
union header *bp, *np;
struct heap_page *page;
size_t nu;
size_t nunits;
nu = PIC_HEAP_PAGE_SIZE / sizeof(union header);
nunits = PIC_HEAP_PAGE_SIZE / sizeof(union header);
assert(nu >= 2);
assert(nunits >= 2);
up = pic_malloc(pic, PIC_HEAP_PAGE_SIZE);
up->s.size = 0; /* up is never used for allocation */
heap_free(pic, up + 1);
bp = pic_malloc(pic, PIC_HEAP_PAGE_SIZE);
bp->s.size = 0; /* bp is never used for allocation */
heap_free(pic, bp + 1);
np = up + 1;
np->s.size = nu - 1;
np = bp + 1;
np->s.size = nunits - 1;
heap_free(pic, np + 1);
page = pic_malloc(pic, sizeof(struct heap_page));
page->basep = up;
page->endp = up + nu;
page->basep = bp;
page->endp = bp + nunits;
page->next = pic->heap->pages;
pic->heap->pages = page;