1
0
forked from Mirror/wren

Add a limited form of re-entrant calls.

This doesn't let you arbitrarily call back into the VM from within
foreign methods. I'm still not sure if that's even a good idea since
God knows what that would mean if you switch fibers while doing that.

But this does allow the very important use case of being able to call
a foreign method from within a call to wrenCall(). In other words,
foreign methods need to always be leaf calls on the call stack, but the
root of that stack can now come from runInterpreter() or wrenCall().

Fix #510.
This commit is contained in:
Bob Nystrom
2019-02-08 17:09:39 -08:00
parent 27a08151e7
commit a5147aa2d9
10 changed files with 111 additions and 16 deletions

View File

@ -76,8 +76,7 @@ clean:
$(V) rm -rf lib
# Run the tests against the debug build of Wren.
test: debug
$(V) $(MAKE) -f util/wren.mk MODE=debug api_test
test: api_test debug
$(V) ./util/test.py $(suite)
benchmark: release
@ -92,6 +91,10 @@ unit_test:
$(V) $(MAKE) -f util/wren.mk MODE=debug unit_test
$(V) ./build/debug/test/unit_wrend
# Build API tests.
api_test:
$(V) $(MAKE) -f util/wren.mk MODE=debug api_test
# Generate the Wren site.
docs:
mkdir -p build
@ -113,4 +116,4 @@ gh-pages: docs
amalgamation: src/include/wren.h src/vm/*.h src/vm/*.c
./util/generate_amalgamation.py > build/wren.c
.PHONY: all amalgamation benchmark builtin clean debug docs gh-pages release test vm watchdocs ci ci_32 ci_64
.PHONY: all amalgamation api_test benchmark builtin clean debug docs gh-pages release test vm watchdocs ci ci_32 ci_64