Commit Graph

27 Commits

Author SHA1 Message Date
Jesse D. McDonald c01f0838f1 Misc. reader improvements, plus ability to run *.rla directly.
Fix tree_replace() to handle recursive data structures.
Fix some other minor bugs in the reader and interpreter.
Implement comment-escapes in the string parser, for more readable input.
Allow input program files (*.rla) to be invoked directly, with arguments.
Add a simple string->number converter as a builtin function.
2012-07-14 13:38:48 -05:00
Jesse D. McDonald 53b1cc213b Skip reader test by default to allow profiling. 2012-07-14 13:38:47 -05:00
Jesse D. McDonald 439491a80e Support negative fixnums in input, and perform some extra validation. 2012-07-14 13:38:45 -05:00
Jesse D. McDonald 449b0cf478 Implement fixed-function reader for getting data into the interpreter. 2012-07-14 13:38:44 -05:00
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