Jesse D. McDonald
10fbc269c5
Implement the remaining bytecodes. Adjust some of the numbering.
...
Also, use #<undefined> for "not yet initialized" and #f for "no value".
2012-07-14 13:38:40 -05:00
Jesse D. McDonald
61e0583932
Implement bytecode, other than floating-point operations.
2012-07-14 13:38:38 -05:00
Jesse D. McDonald
d1dcb77503
Update printer to display 'undefined' values as "#<undefined>".
2012-07-14 13:38:37 -05:00
Jesse D. McDonald
56a67a263d
Add an 'undefined' value and a function to convert booleans into values.
2012-07-14 13:38:36 -05:00
Jesse D. McDonald
0005ef2f86
Assign numbers to the bytecodes. Place all unary codes into one group.
2012-07-14 13:38:34 -05:00
Jesse D. McDonald
d80e0c1fd3
CLOCK_MONOTONIC and uint64_t aren't entirely portable.
2012-07-14 13:38:32 -05:00
Jesse D. McDonald
cec35b4d7c
Initial revision of .hgignore committed to version control.
2012-07-14 13:38:30 -05:00
Jesse D. McDonald
dc35896174
Need to parenthesize "n" in SPECIAL_VALUE macro for precedence.
...
This was causing the type tags to overlap with fixnums.
2012-07-14 13:38:26 -05:00
Jesse D. McDonald
26819cafdc
Update list of weak boxes *after* processing finalizers.
...
It's a bit unlikely, but a finalizer could be arranged for a weak box.
Also add more assertions, clear old range in debug builds, and misc. cleanup.
2012-07-14 13:38:23 -05:00
Jesse D. McDonald
4136b74e1b
If (any) option is given, run GC test forever. Otherwise just run it once.
2012-07-14 13:38:20 -05:00
Jesse D. McDonald
0a2f13b523
Added built-in structure types and interpreter core (w/o bytecode).
...
Improved timing resolution by using clock_gettime() instead of clock().
Also gave project a name: Rosella. Play on 'Parrot' (Perl 6 VM).
2012-07-14 13:38:02 -05:00
Jesse D. McDonald
080906fa72
Move documentation into a subdirectory.
2012-07-14 13:37:48 -05:00
Jesse D. McDonald
f9f3cae062
Test new weak-box and finalizer functions. Includes value-printer.
2012-07-14 13:37:47 -05:00
Jesse D. McDonald
7bd6e616ff
Add support for weak boxes and wills/finalizers.
...
Also refactored some GC code into smaller functions.
Weak boxes and wills will be useful for implementing weak hash tables,
which in turn will be used to store dynamic parameters efficiently.
2012-07-14 13:37:41 -05:00
Jesse D. McDonald
5a0789c788
Fix an infinite-recursion bug in the DEBUG=yes condition.
2012-07-14 13:37:40 -05:00
Jesse D. McDonald
d8d11f2da2
Initial revision of low-level representation and compiler design.
2012-07-14 13:37:39 -05:00
Jesse D. McDonald
0867f66767
Add structure type; allow GC to be disabled; unify object-moving code.
2012-07-14 13:37:37 -05:00
Jesse D. McDonald
6829d550f5
Increase optimization level.
2012-07-14 13:37:35 -05:00
Jesse D. McDonald
f8e04f1b86
Add full support for remaining data type (box, vector, byte string).
...
Improve inline accessors for cases where value type is known.
Move GC stats into a single global structure to reduce proliferation of globals.
2012-07-14 13:37:31 -05:00
Jesse D. McDonald
8db40406a0
Refactor into a GC library (gc.c and gc.h) and a test program (gc_test.c).
...
Also, allocate GC memory ranges dynamically during startup (gc_init()) rather than statically.
2012-07-14 13:37:19 -05:00
Jesse D. McDonald
61b83a1293
Add support for (strong) boxes, value vectors, and byte strings.
2012-07-14 13:37:15 -05:00
Jesse D. McDonald
a464397e64
Add rules to control generation and use of profile data.
2012-07-14 13:37:04 -05:00
Jesse D. McDonald
9fa0a09509
Initial check-in.
2012-07-14 13:36:26 -05:00