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