JeffBezanson
b5897e0ad1
adding maxstack calculation and stack overflow protection
...
making append benchmark more useful by measuring interpreter
speed instead of the builtin
2009-06-27 23:07:22 +00:00
JeffBezanson
8decdc4ae4
making append a builtin
...
making branch destinations relative so we can access the code
using *ip instead of code[ip]
doing the same to bp (argument access)
small improvement to map, builtin->instruction
better profiling
2009-06-15 02:25:21 +00:00
JeffBezanson
6ec69f5375
optimizations to map and case
...
several optimizations to the compiler itself, mostly involving
emit and encode-byte-code
experimental, very basic profiling utility
2009-06-11 00:34:50 +00:00
JeffBezanson
943c0d71d1
tiny performance tweaks: removing some variables, making some static
2009-06-09 18:46:02 +00:00
JeffBezanson
27a3e413d3
adding opcodes loada0, loada1, loadc00, loadc01
...
adding offset and count arguments to dump
2009-06-08 03:22:32 +00:00
JeffBezanson
17752decf4
implementing support for lambdas with up to 2^32-1 required arguments
...
using copy-list to implement append2
fixing bug in op_vargc when nrequired==MAX_ARGS
making fetching of multibyte numbers from bytecode portable
some cleanup in compiler
2009-06-06 21:15:54 +00:00
JeffBezanson
7e59898778
updating doc
2009-05-31 22:27:37 +00:00
JeffBezanson
91a6ae6490
adding string.width
2009-05-31 22:09:26 +00:00
JeffBezanson
7c48f6ae53
some renaming and reorganizing
...
using more scheme-like names append! and reverse!
2009-05-31 21:06:04 +00:00
JeffBezanson
ba32e4b0e9
simplifying the whole list* situation, taking better advantage of
...
existing builtin functionality
2009-05-31 18:58:09 +00:00
JeffBezanson
7e65db3e74
faster append
...
removing 'equal' alias
removing some top level bindings
2009-05-30 21:13:13 +00:00
JeffBezanson
bbcc68cfdf
making copy-list a builtin, since the functionality was there anyway.
...
adding builtin primitive apply-nlist*, to speed up list* and nlist*
2009-05-30 17:54:27 +00:00
JeffBezanson
a23bee041f
fixing bug in cond when condition wasn't followed by any forms
...
fixing typo in cps.lsp
optimizing constant conditions in if
2009-05-30 17:04:34 +00:00
JeffBezanson
e2c1d2ae9e
some cleanup
2009-05-30 02:52:22 +00:00
JeffBezanson
c42ee12d4c
allowing multiple expressions in lambda
...
making cond a macro
increasing size limit for cvalues on the managed heap, and inline
allocated hashtables
2009-05-29 04:38:50 +00:00
JeffBezanson
1ee81e2625
fixing bug printing functions involved in cycles
2009-05-21 00:56:25 +00:00
JeffBezanson
99c17feac1
made cons hashing tail recursive on cdrs
...
plus one more test
2009-05-20 18:52:09 +00:00
JeffBezanson
ff650e3049
fixing hash function to do a better job on long lists.
2009-05-20 04:30:00 +00:00
JeffBezanson
bfbbf051c9
doing a better job hashing circular structure. the hash function is now
...
always fast and gives conservative correct answers, at the expense of
fidelity on medium and large size structures. for example (hash (iota 15))
gives the same result as (hash (iota 14)).
2009-05-20 03:39:20 +00:00
JeffBezanson
c2026ba77c
adding gc handles, making evaluator stack static
...
this provides a better interface and could only help performance
starting to add some useful library code
2009-05-19 02:54:56 +00:00
JeffBezanson
c38c47d264
adding R6RS div, mod, div0, mod0
...
small improvement to cmp_eq
explicit -fomit-frame-pointer was causing test failures with gcc4.3.2
2009-05-14 17:54:59 +00:00
JeffBezanson
e365cb1d33
adding divide by 0 check in div
2009-05-14 02:53:04 +00:00
JeffBezanson
ae2a4dd156
adding integer division function div
...
changing / to do real division always
fixing equal? to distinguish -0.0 and 0.0
making equal? and eqv? false on numbers of different exactness
2009-05-14 01:30:25 +00:00
JeffBezanson
6c549f0399
fixing hash of circular structure to avoid tree recursion (very important!!)
...
simplifying vector_grow
2009-05-13 04:03:13 +00:00
JeffBezanson
77e37368c9
fixing trace and untrace
...
replacing function->vector with function:code, function:vals, and
function:env
2009-05-13 01:13:40 +00:00
JeffBezanson
a7a31cf53a
fixing vararg apply to work properly
2009-05-11 23:55:40 +00:00
JeffBezanson
afa77a8c5f
adding array?
...
adding vararg apply
2009-05-08 04:08:31 +00:00
JeffBezanson
af72c4f5bd
putting the saved environment in the order that matches the current
...
boot file
2009-05-08 03:00:40 +00:00
JeffBezanson
2c212fbcf7
adding random function
...
fixing bug in integer?
sorting environment in make-system-image for more stable diffs
2009-05-08 02:52:25 +00:00
JeffBezanson
3dbaa358f9
making 3rd argument to string.sub optional
...
some renaming
removing 1/Instructions table
2009-05-07 02:10:52 +00:00
JeffBezanson
c94774a5df
adding *error-stream* variable
...
removing unnecessary byte after :let in bytecode encoding
adding script for easy bootstrapping
2009-05-05 23:51:13 +00:00
JeffBezanson
63edc82ba4
using global variables uniformly for print settings instead of passing
...
around one of them
fixing unwind-protect not to duplicate code
2009-05-05 04:01:06 +00:00
JeffBezanson
264df1f90b
improving closure representation
...
some performance tweaks
2009-04-28 04:10:18 +00:00
JeffBezanson
14d625bd83
some performance tweaks
2009-04-27 03:21:53 +00:00
JeffBezanson
de19e4f401
adding return special form
...
eliminating some unnecessary top-level bindings
adding opcodes add2, sub2, neg
2009-04-26 22:19:32 +00:00
JeffBezanson
0dc4c16276
making procedure? a builtin
...
fixing type error trying to apply #t, #f, nil
2009-04-24 20:43:56 +00:00
JeffBezanson
1259c17837
updating interpreter to work better for bootstrapping
...
adding program mkboot0, which can be run in the interpreter to compile
source files into a stage-0 boot image.
2009-04-23 00:55:03 +00:00
JeffBezanson
909b91ffcc
fixing printing of invalid UTF-8
2009-04-23 00:22:03 +00:00
JeffBezanson
e4488bb065
some tweaks to the vm
2009-04-22 23:00:13 +00:00
JeffBezanson
27120b0ce4
fixing bug in truncate
...
simplifying nconc loop
2009-04-22 15:02:49 +00:00
JeffBezanson
291b5f86e0
fixing nconc on long argument lists
2009-04-22 01:40:10 +00:00
JeffBezanson
2bf87ede4f
fixing !print_pretty on vectors
2009-04-21 21:41:32 +00:00
JeffBezanson
2cceb9e538
fixing function? and disassemble
2009-04-21 15:47:30 +00:00
JeffBezanson
d6f73d0bf0
implementing #vu8 read and print syntax for uint8 vectors
...
much more compact string representation of bytecode
2009-04-21 15:35:46 +00:00
JeffBezanson
305c350c56
a couple small fixes
...
making bytecode representation more space-efficient
2009-04-21 14:53:18 +00:00
JeffBezanson
25812731cc
eliminating interpreter. the bytecode VM is now fully bootstrapped.
...
making the empty vector a singleton
removing syntax environment stuff from core
reimplementing eval using the compiler
fixing a couple bugs in long argument lists
2009-04-21 00:56:05 +00:00
JeffBezanson
5ab7a7c1e1
adding new "translucent" function type for byte-compiled lambdas
2009-04-19 22:22:17 +00:00
JeffBezanson
aa62ae9e96
allowing (copy x) and other byte stream functions only on plain-old-data types
...
adding plain-old-data? predicate
adding string.join
2009-04-19 16:48:09 +00:00
JeffBezanson
2ed581e62d
adding top-level-value and set-top-level-value!, using them instead of
...
set and eval where appropriate
adding separate integer? and integer-valued? predicates
2009-04-17 14:41:15 +00:00
JeffBezanson
86b7738c89
cleaning up implementation of apply() entry point
...
removing use of interpreter in computed calls to builtins
2009-04-17 03:40:52 +00:00