c8cb0be816
Better handling for lexing errors.
2013-12-23 14:51:06 -08:00
1503e74233
Get rid of unused DUP instruction.
2013-12-23 11:37:47 -08:00
9235a7e38f
Fields in closures.
2013-12-23 11:17:40 -08:00
c0169896e6
Get rid of ResolvedName.
2013-12-22 20:53:35 -08:00
ad1fcf66bc
Superclass calls in closures.
2013-12-22 20:46:12 -08:00
3c8b4c009f
Allow variables without initializers.
2013-12-22 18:47:58 -08:00
034fec6eaa
Make fibers real objects.
2013-12-22 14:31:33 -08:00
7625de7536
Make ip an actual pointer.
2013-12-22 13:46:13 -08:00
7868287f89
Make IO.write() call toString on its argument.
2013-12-22 11:50:00 -08:00
2ec01c558f
Clean up the root of the class/metaclass hierarchy.
2013-12-21 20:44:37 -08:00
6c3aa85228
Make IO a static class instead of a singleton.
2013-12-21 19:25:09 -08:00
24a6f4cd8c
Closing over "this".
2013-12-21 15:55:08 -08:00
76ac818eaf
Subscript setters.
2013-12-21 09:37:59 -08:00
6fdcf800a8
Do a bit more documentation.
2013-12-21 09:15:30 -08:00
f2b036420d
Fix a bunch of test TODOs.
...
- Added a bunch of tests.
- Removed some TODOs for stuff that's already done.
- Made list literals handle newlines better.
2013-12-20 12:42:11 -08:00
315ed1c425
Make heap usage configurable.
2013-12-20 07:41:35 -08:00
e83d0bb360
Setters!
2013-12-20 07:05:31 -08:00
61e745d548
Bump default heap size up.
...
This makes the binary_trees benchmark much faster.
2013-12-20 07:05:13 -08:00
b937597ea7
Make benchmarks score based instead of time based.
2013-12-20 07:04:04 -08:00
f9099791a1
Add another test for constructor syntax.
2013-12-19 09:10:45 -08:00
4d67f2270a
Use more conventional syntax for constructors.
...
They are now invoked like "new Foo".
Also, superclass constructors are now much less semantically
and syntactically weird. Since the instance is created before
any constructor is called, there's no point in time where the
instance isn't there.
2013-12-19 07:02:27 -08:00
b880b17db9
Add TODO about resolving ctors.
2013-12-18 07:39:46 -08:00
e7cf8ffe2e
Make method_call benchmark use inheritance.
...
This also fixes a bug where constructors weren't being bound
correctly, and eliminates some unneeded instructions when
compiling ifs.
I also tweaked the other method_call languages to match Wren's.
Since Wren needs to do a super call to get to the parent _count,
the other languages do now too.
This is nice too because it means we're benchmarking super
calls.
2013-12-18 07:37:41 -08:00
caafa96252
More work on docs.
2013-12-17 09:39:26 -08:00
271fcec81b
Start getting superclass constructors working.
...
This also means the metaclass inheritance hierarchy parallels
the regular inheritance chain so that the subclass can find
the superclass constructor.
2013-12-17 09:39:05 -08:00
70e548657e
Don't allow "super" outside of methods.
2013-12-15 22:08:40 -08:00
5fb2d5af71
Use flexible array for upvalues in closure.
2013-12-15 22:02:22 -08:00
9e67cd3220
Use stdbool.h and bool for booleans.
2013-12-14 23:41:23 -08:00
f5e4f95069
Write some more scope edge case tests.
2013-12-14 16:36:19 -08:00
7fe60499db
Get rid of my name from TODOs. Anyone can do them.
2013-12-14 15:28:18 -08:00
5c807c0ec5
Track memory during deallocation correctly.
...
It used to subtract the number of bytes during deallocation, but
that required knowing the size of an object at free time. That
isn't always available. The old code could read a freed object
while doing this. Bad!
Instead, this tracks how much memory is still being used by
marked objects. It's correct, and is also a bit less code and
faster.
2013-12-14 14:17:16 -08:00
3fd7fa56fb
Inline wrenObjectToValue().
...
Seems to give a slight speed bump. Inlining the wrenIs___
functions doesn't seem to help (may make it a bit worse.)
2013-12-14 11:34:49 -08:00
088b1be98c
Clean up config #defines.
2013-12-14 11:06:54 -08:00
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