Commit Graph
870 Commits
Author SHA1 Message Date
Lukas Werling e1d3596643 Allow trailing comma in map literal 2015-08-31 06:41:09 -07:00
Bob Nystrom 556af50f83 Revise low level fiber semantics to play nicer with schedulers.
Now that I'm starting to write a real async scheduler on top of Wren's
basic fiber API, I have a better feel for what it needs. It turns out
run() is not it.

- Remove run() methods.
- Add transfer() which leaves the caller of the invoked fiber alone.
- Add suspend() to return control to the host application.
- Add Timer.schedule() to start a new independently scheduled fiber.
- Change Timer.sleep() so that it only transfers control to explicitly
  scheduled fibers, not any one.
2015-08-30 22:15:37 -07:00
Bob Nystrom 91af02ac81 Merge branch 'master' into libuv
# Conflicts:
#	project/xcode/wren.xcodeproj/project.pbxproj
#	script/wren.mk
#	src/cli/main.c
#	src/cli/vm.c
#	src/cli/vm.h
#	test/api/main.c
2015-08-28 23:13:56 -07:00
Bob Nystrom fa4a8148c9 A little bit of code clean-up. 2015-08-22 07:56:38 -07:00
Bob Nystrom 1c941c0258 Make a helper function for matching and consuming a character. 2015-08-21 23:08:11 -07:00
Bob Nystrom 470d2347ff Store number and string literals directly as a Value in the parser.
Thanks, Michel!
2015-08-21 22:54:30 -07:00
Bob Nystrom 40fbf6112b Use "init " as the prefix for initializers. 2015-08-20 22:30:44 -07:00
Bob Nystrom ab3c57d518 Merge branch 'still-seeing-this' of https://github.com/minirop/wren into ctor 2015-08-20 22:23:53 -07:00
minirop af5b654f4b updated comments where "this" was still used for constructors 2015-08-19 19:33:54 +02:00
Rohan Singh 513f272244 Copy the null terminator with the string instead of setting it 2015-08-16 14:00:50 -04:00
Rohan Singh cb603f44c2 Properly dispose of libuv timers when we finish using them 2015-08-16 13:58:24 -04:00
Rohan Singh 0efb943173 Fix timerGetSource() returning a string without a null terminator 2015-08-16 13:58:23 -04:00
Bob Nystrom cd5087d222 Get 32-bit and C++ Mac builds happy with libuv. 2015-08-16 10:28:55 -07:00
minirop 0c539af6ac added scientific notation 2015-08-16 11:50:45 +02:00
Bob Nystrom 48bdbc7745 First pass at implementing foreign classes.
Most of the pieces are there:

- You can declare a foreign class.
- It will call your C function to provide an allocator function.
- Whenever a foreign object is created, it calls the allocator.
- Foreign methods can access the foreign bytes of an object.
- Most of the runtime checking is in place for things like subclassing
  foreign classes.

There is still some loose ends to tie up:

- Finalizers are not called.
- Some of the error-handling could be better.
- The GC doesn't track how much memory a marked foreign object uses.
2015-08-15 12:07:53 -07:00
Bob Nystrom 9845ed5126 Tests for Timer.sleep(). 2015-08-08 07:17:30 -07:00
Bob Nystrom d4acbe8a70 A vertical slice of real libuv integration.
This adds a "timer" module to the CLI that provides a Timer class with
a static sleep() method. Not the most exciting functionality in the
world, but it requires the full hunk of libuv integration:

- The CLI sets up libuv and runs the event loop.
- Added a new directory src/module for CLI modules.
- Updated all the make scripts to handle it.
- Reorganized some other CLI code.
2015-08-07 08:10:55 -07:00
Bob Nystrom 56d4d3e671 Allow passing WrenValues to wrenCall(). 2015-08-07 07:57:23 -07:00
Bob Nystrom 0b97b27cf4 Add an API for storing handles to values outside of the VM.
It's pretty bare bones now, but it lets you get a reference to an object
from a foreign call and then return it later.
2015-08-06 22:24:15 -07:00
Bob Nystrom a1424f8371 Be more explicit about fulling initializing Signature structs.
Thanks, Michel!
2015-08-06 07:34:19 -07:00
Bob Nystrom d18ee3068a Make wrenFindVariable() also take a module.
Thanks, Michel!
2015-08-06 07:13:11 -07:00
Bob Nystrom 0631f3b109 Fix deadlock bug in map insertion. 2015-08-06 06:55:30 -07:00
Bob Nystrom 71ab3ca887 Use "construct" instead of "this" to define constructors. 2015-07-21 07:24:53 -07:00
Bob Nystrom bc822cd4c7 Merge branch 'master' into constructor-methods 2015-07-19 12:49:23 -07:00
Bob Nystrom 71eda0e427 Make an inline function for getting the fn for a call frame.
Thanks, Michel!
2015-07-19 10:16:54 -07:00
Bob Nystrom e42893fe4c Clean up macros and fix non-nan-tagged and non-computed-goto modes. 2015-07-19 10:16:27 -07:00
Bob Nystrom fd637e46bc Fix a couple of style nits. 2015-07-18 14:17:39 -07:00
Bob Nystrom d91c06d18b Tweak IO library a bit:
- Reword some docs.
- Make IO.printAll() public.
- Require () on read.
2015-07-18 14:09:00 -07:00
Bob Nystrom 861d906fc2 Ensure signature type is correctly initialized. 2015-07-10 10:27:32 -07:00
Bob Nystrom a389fdea67 Fix implicit conversion. 2015-07-10 09:22:04 -07:00
Bob Nystrom 5fb6186d7d Make constructors just methods.
* Eliminate "new" reserved word.
* Allow "this" before a method definition to define a constructor.
* Only create a default constructor for classes that don't define one.
2015-07-10 09:18:22 -07:00
Bob Nystrom 2387d4dc31 Grow the call frame array dynamically.
Previously, fibers had a hard-coded limit to how big their stack size
is. This limit exists in two forms: the number of distinct call frames
(basically the maximum call depth), and the number of unique stack
slots.

This fixes the first half of this by dynamically allocating the call
frame array and growing it as needed. This makes new fibers smallers
since they can start with a very small array. Checking and growing as
needed doesn't noticeably regress the perf on the other benchmarks, and
it makes a new fiber benchmark about 45% faster.

The stack array is still hardcoded, but that will be in another commit.
2015-07-01 00:00:25 -07:00
Bob Nystrom 18dcd3ce3d Reuse primitive for returning this.
Thanks, Michel!
2015-06-30 07:39:43 -07:00
Bob Nystrom 4a15653c66 Add isEmpty to Sequence.
Thanks, Michel and Thorbjørn!
2015-06-30 06:52:29 -07:00
Bob Nystrom ed6d7c5084 Implement toString directly on Class.
Thanks, Michel!
2015-06-28 15:33:37 -07:00
Bob Nystrom 1a87f52e9d Eliminate duplication between CODE_CALL and CODE_SUPER handling.
Also improves perf:

binary_trees - wren            106.96% relative to baseline
delta_blue - wren               99.84% relative to baseline
fib - wren                     114.97% relative to baseline
for - wren                     123.32% relative to baseline
method_call - wren             112.80% relative to baseline
map_numeric - wren             111.36% relative to baseline
map_string - wren               93.73% relative to baseline
string_equals - wren           106.15% relative to baseline
2015-06-28 10:58:48 -07:00
Bob Nystrom 080514cffb Tweak arguments to runInterpreter().
Thanks, Michel!
2015-06-27 08:56:52 -07:00
Bob Nystrom aa37bdc780 Include method name in block argument debug name. 2015-06-27 08:36:20 -07:00
Bob Nystrom bf730bb953 More tests for invalid code points. 2015-06-27 08:11:58 -07:00
Bob Nystrom 7baef81a4e Clean up a bit. 2015-06-26 23:01:07 -07:00
Bob Nystrom 8c538e4048 Merge branch 'leaks' of https://github.com/NomAnor/wren into NomAnor-leaks 2015-06-26 22:49:24 -07:00
Bob Nystrom 8ce4879de5 Clean up getting modules.
Thanks, Michel!
2015-06-23 07:15:22 -07:00
Bob Nystrom 2c95ae2d2e Make "is" just another infix operator.
Thanks, Michel!
2015-06-19 07:58:07 -07:00
Bob Nystrom 327b40bba7 Remove unnecessary null checks before calling wrenMarkObject().
Thanks, Michel!
2015-06-18 07:52:05 -07:00
André Althaus 01fe9c3976 Fix memory leak for rootDirectory variable
The memory for the root directory path is not freed.
2015-06-03 21:48:26 +02:00
André Althaus 33151c64d2 Fix memory leak for compiler constants
The ownership for constants is not transfered to the new function so the
constant buffer must be cleared when the compiler is finished.
2015-06-03 21:47:16 +02:00
André Althaus 0add2195f3 realloc is not a valid implementation for the wren reallocation function
The behavior of realloc for size == 0 is implementation defined.
It can return a non NULL pointer which must not be dereferenced but nether
the less must be freed. When calling the wren reallocation function with
size == 0 the memory pointed to ptr must be freed and NULL returned.
2015-06-02 20:57:41 +02:00
Bob Nystrom 73a2101505 Merge branch 'fix-super' 2015-06-02 07:33:48 -07:00
Bob Nystrom 3cdfaea797 Statically dispatch super() calls. Fix #250. 2015-06-02 07:33:39 -07:00
Bob Nystrom 08f0937f89 Fix NaN tagging diagrams. 2015-06-02 07:14:19 -07:00