1
0
forked from Mirror/wren
Commit Graph

1795 Commits

Author SHA1 Message Date
165cf29db0 Special "constructor methods" -> "new" instruction.
This simplifies the call instruction a bit (and is overall
less code).
2013-12-13 11:32:47 -08:00
d54bca3067 Get basic superclass method calls working. 2013-12-13 08:37:49 -08:00
4957728893 Move OP_CLOSURE and OP_LIST down.
Since they're less frequently used, pushing them down speeds
things up a little bit.
2013-12-13 06:47:34 -08:00
5aaaa33552 Revise benchmarks:
- Ditch JS since it's in a different league.
- Make binary_trees and fib run faster.
- Compare using best time instead of mean.
2013-12-12 16:59:57 -08:00
8e71660ce6 Reorder the method types.
Seems to slightly improve perf.
2013-12-12 07:39:27 -08:00
4ba5c38bbf Generate default constructors at compile time.
Also re-ordered a few of the cases in the interpret loop. 
Removing a bit of code from CODE_CLASS and CODE_CALL triggered
some branch alignment issues which had a negative perf impact.
The new ordering seems to cancel that out.
2013-12-12 07:34:16 -08:00
e191424a70 Make "super" a reserved word. 2013-12-11 08:02:17 -08:00
6e16df08f0 Add note about default constructor. 2013-12-11 08:00:25 -08:00
71c26c6d89 Add support for just control which language benchmarks are run. 2013-12-10 23:02:24 -08:00
510e3fc383 Add test for default constructor. 2013-12-10 21:58:02 -08:00
03c7b01b0f Start writing performance doc. 2013-12-10 21:51:58 -08:00
c1cfe1b9f6 Handle inherited fields correctly. 2013-12-10 16:13:25 -08:00
1e2449893e Add baseline comparison to benchmark script.
This way, I can track performance improvements and regressions.
2013-12-07 22:15:25 -08:00
42b04c6c90 Fix bug in loops.
It was still popping the stack for the body even though loop
bodies are statements now.
2013-12-07 18:47:40 -08:00
eb1e5b48d6 Fix up benchmarks and add method call one. 2013-12-07 18:43:39 -08:00
3f24515496 Don't allow method names to overflow. 2013-12-06 20:09:43 -08:00
6a0d550562 Bitwise ~ operator. 2013-12-04 22:09:31 -08:00
7355dd3dc7 Fill in some more basic syntax docs. 2013-12-04 21:51:23 -08:00
c91fcd12cc Treat ";" like newlines. 2013-12-04 19:12:21 -08:00
8521d5ad79 Bunch more work on docs. 2013-12-04 07:46:41 -08:00
047cfacede Include "include" directory in source code metrics. 2013-12-04 07:46:23 -08:00
157944aa27 Get closures working!
In the process, I had to change the grammar. There is now a strong
separation between statements and expressions. The code was just wrong
before when it popped locals at the end of a block scope because there
could be temporaries on the stack if the block was in expression
position. This fixes that.

Still need to implement closing over `this`.
2013-12-04 07:43:50 -08:00
c14b115c02 Use char* instead of offsets for tokens.
Simplifies a bunch of code that works with token strings.
2013-12-01 15:22:24 -08:00
e4043d69b4 Unify code for ending compiler.
There's now a single code path for the end of a chunk of bytecode, so
we can eventually put code there for capturing closures.
2013-12-01 14:59:56 -08:00
19811143a0 Always use provided allocator for allocation. 2013-12-01 10:22:32 -08:00
9188c00bc0 Start adding navigation to the docs. 2013-12-01 09:54:51 -08:00
d2e82d8967 Clean up parsing a bit. 2013-12-01 00:04:46 -08:00
60c97b5c2f Make sure we don't go over the maximum number of locals. 2013-11-30 18:51:27 -08:00
88852960ca Handle local variable shadowing. 2013-11-30 18:28:01 -08:00
74c414937c Add JS version of binary tree benchmark. 2013-11-29 20:25:00 -08:00
f6c9848706 Ignore scratch script. 2013-11-29 16:20:44 -08:00
edb9032052 Get binary_trees benchmark working.
Wren is actually doing well in it:

wren      mean: 1.9441 median: 1.9428 std_dev: 0.0260
lua       mean: 3.5992 median: 3.6033 std_dev: 0.0156
python    mean: 3.6667 median: 3.7097 std_dev: 0.1340
ruby      mean: 1.3941 median: 1.3914 std_dev: 0.0091
2013-11-29 16:19:13 -08:00
ce89dd9c2f Fix compiling constructors. 2013-11-29 16:17:43 -08:00
8c9ce024ee Move debug code into separate module. 2013-11-29 16:17:33 -08:00
b390bdf604 Clean up constructor tests. 2013-11-29 15:21:36 -08:00
325bb281a5 Allow 16 arguments, and handle going over that correctly. 2013-11-29 15:08:27 -08:00
5f1d5cfa85 Do not allow fields outside of classes. 2013-11-29 10:53:56 -08:00
1b353e9380 Make pinned list a linked list instead of hardcoded array. 2013-11-29 09:18:13 -08:00
715fecdc7c Rename files and add some docs. 2013-11-28 08:11:50 -08:00
9d9f9c11ca Clean up "primitive" code. 2013-11-28 08:00:55 -08:00
1fc9fe131d Clean up value code. 2013-11-27 20:00:03 -08:00
c2f4345af4 Remove stale TODO. 2013-11-27 11:34:35 -08:00
1bfa252a70 List.removeAt(). 2013-11-27 10:20:32 -08:00
f8ded27376 List.clear and List.insert(). 2013-11-26 23:11:11 -08:00
56449cdbef Reorganize tests. 2013-11-26 22:52:00 -08:00
897a396599 List.add() method. 2013-11-26 18:02:10 -08:00
eaeec01dc6 Get inheritance and core classes more correctly wired up. 2013-11-26 07:52:37 -08:00
af694053a5 Add JavaScript to benchmark runner. 2013-11-26 07:50:12 -08:00
af6b73208c Start defining actual API for embedding Wren. 2013-11-25 07:47:02 -08:00
f9b2aed4dd Unify to a single reallocation function. 2013-11-25 07:14:51 -08:00