|  | Commit message (Collapse) | Author | Age | 
|---|
| | 
| 
| 
| 
| 
| | This level of optimization caused trouble, so use it all of the time.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | After marking a set of memory chunks, it's possible that all of them
will be packed tight against 'top', in which case none of them will be
moving. In that case, gcc 7.2.0 appears to generate incorrect code
causing the loop to be abandoned, meaning that we don't actually
collect anything at all.
Add a quick short-circuit test just after the mark phase that skips
the code which wouldn't do anything in this case.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | Allow applications to redefine these as desired, add more flexibility
in what the various memory debugging flags can do.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | This can catch a host of interpreter bugs; best to abandon the program
when it happens.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | This flags any object being printed and checks before recursing to
avoid infinite loops.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | More efficient than ao_scheme_poly_type as it doesn't care about
non-prim types.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| 
| | This lets BIGINT be a primitive type, allowing it to use all 32 bits
for storage. This does make strings another byte longer, and also
slightly harder to deal with. It's a trade off.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| | Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | Also includes some code to display stack usage during collect calls.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | Avoids the extra stack depth of the poly versions.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | Make local funcs static. Don't mix decls and code.x
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | Mostly printf and friends.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | This provides for the creation of smaller versions of the interpreter,
leaving out options like floating point numbers and vectors.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | Useful to include the code for implementing vectors
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | Reset exceptions at the top so that we can call it more than once.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| | Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | It's only 32kB.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | Large numbers, floats and strings need a value check, not just a
comparison between ao_polys
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | Large ints, strings and floats can cause allocation, requiring that
the 'cons' pointer be stashed and retrieved in case it moved.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | A lot easier as a built-in; the obvious scheme version is recursive.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | These are only collected for debug purposes, but can get quite large
if the interpreter runs for a while.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | Just make the language closer to r7rs
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | Use ao_scheme_cons_cdr to fetch the next list element as that returns
NULL for non-cons elements.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | Constant time and smaller can be a feature.
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | .lisp -> .scheme
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| | This lets the interactive prompt change based on what state the lexer
is in
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| | Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | ao_scheme_make_const
This ensures that a parallel build will wait for ao_scheme_builtin.h
to be complete before attempting to compile ao_scheme_make_const
Signed-off-by: Keith Packard <keithp@keithp.com> | 
| | 
| 
| 
| 
| 
| | Keeps it away from the usual test setup
Signed-off-by: Keith Packard <keithp@keithp.com> | 
|  | Constant block is now built in a subdir to avoid messing up source
directory.
Renamed to ao_scheme to reflect language target.
Signed-off-by: Keith Packard <keithp@keithp.com> |