Gareth Rees
b6300a3af4
Avoid type pun.
...
Copied from Perforce
Change: 180364
ServerID: perforce.ravenbrook.com
2012-11-06 12:16:46 +00:00
Gareth Rees
1c937a1915
Integrate table_delete bugfix from scheme.c.
...
Copied from Perforce
Change: 180355
ServerID: perforce.ravenbrook.com
2012-11-05 23:57:21 +00:00
Gareth Rees
c06a2a56ac
Need to check hash table for staleness when deleting a key.
...
Copied from Perforce
Change: 180354
ServerID: perforce.ravenbrook.com
2012-11-05 23:29:23 +00:00
Gareth Rees
5498084781
Targets depend on the makefile.
...
Copied from Perforce
Change: 180308
ServerID: perforce.ravenbrook.com
2012-11-04 23:06:56 +00:00
Gareth Rees
67f310ef48
Oops, forgot to check in advanced.rst.
...
Copied from Perforce
Change: 180304
ServerID: perforce.ravenbrook.com
2012-11-03 18:28:36 +00:00
Gareth Rees
d1bc2a6855
Write "advanced topics" chapter of the user guide.
...
Copied from Perforce
Change: 180303
ServerID: perforce.ravenbrook.com
2012-11-03 17:38:57 +00:00
Gareth Rees
f16a8b3629
Merge improvements from scheme.c.
...
TAG_COUNT is a better name than TAG_LENGTH.
Handle splat correctly even if no dependent object.
Copied from Perforce
Change: 180302
ServerID: perforce.ravenbrook.com
2012-11-03 17:38:37 +00:00
Gareth Rees
88d5827d32
Fix typo in make_port.
...
Hash tables only depend on the location of keys if they are hashed by address.
Port objects are registered for finalization when created, and definalized when closed.
New function load handles loading a file in both cases (and calls mps_chat to ensure finalization).
Avoid calling fclose multiple times on a file handle.
Merge main loop improvements from scheme-malloc.c.
Copied from Perforce
Change: 180301
ServerID: perforce.ravenbrook.com
2012-11-03 17:30:25 +00:00
Gareth Rees
3169429b36
Fix bug: actually close the file in entry_close_port.
...
Copied from Perforce
Change: 180300
ServerID: perforce.ravenbrook.com
2012-11-03 17:08:15 +00:00
Gareth Rees
b191edc1e5
Separate the interactive and non-interactive loops for clarity.
...
New function "load" loads a file; call this in the non-interactive case.
Fix bug: close file handle after loading (if no error).
Copied from Perforce
Change: 180299
ServerID: perforce.ravenbrook.com
2012-11-03 15:49:59 +00:00
Gareth Rees
7bde2ba145
Integrate quasiquote improvements from scheme.c.
...
Copied from Perforce
Change: 180297
ServerID: perforce.ravenbrook.com
2012-11-02 22:45:41 +00:00
Gareth Rees
0ec61243f9
Integrate quasiquote improvements.
...
Copied from Perforce
Change: 180296
ServerID: perforce.ravenbrook.com
2012-11-02 22:39:26 +00:00
Gareth Rees
4df0a7d528
Improve quasiquote implementation.
...
Copied from Perforce
Change: 180295
ServerID: perforce.ravenbrook.com
2012-11-02 22:38:05 +00:00
Gareth Rees
2eb56323e1
Implement the global symbol table as a weak-value hash table from strings to symbols.
...
Copied from Perforce
Change: 180294
ServerID: perforce.ravenbrook.com
2012-11-02 21:23:12 +00:00
Gareth Rees
e0d552ff66
Integrate error implementation from scheme-malloc.c.
...
Copied from Perforce
Change: 180293
ServerID: perforce.ravenbrook.com
2012-11-02 19:12:58 +00:00
Gareth Rees
f4fccc5cef
Implement "error".
...
Copied from Perforce
Change: 180292
ServerID: perforce.ravenbrook.com
2012-11-02 19:07:55 +00:00
Gareth Rees
f35be3c83e
New test case for weak hash tables (doesn't pass yet).
...
Copied from Perforce
Change: 180291
ServerID: perforce.ravenbrook.com
2012-11-02 17:35:39 +00:00
Gareth Rees
ec1375852d
Refactor test code now that we can load it.
...
Copied from Perforce
Change: 180290
ServerID: perforce.ravenbrook.com
2012-11-02 17:35:05 +00:00
Gareth Rees
d4fbbdfb6d
Merge scheme.c changes (load, eqv) into scheme-advanced.c.
...
Improve weak hash table interface.
Fix a couple of bugs in handling of dependent objects.
Copied from Perforce
Change: 180289
ServerID: perforce.ravenbrook.com
2012-11-02 17:34:49 +00:00
Gareth Rees
73f266ef56
Integrate load from scheme-malloc.c.
...
Copied from Perforce
Change: 180288
ServerID: perforce.ravenbrook.com
2012-11-02 16:40:22 +00:00
Gareth Rees
fb09e1a364
Implement load.
...
Copied from Perforce
Change: 180287
ServerID: perforce.ravenbrook.com
2012-11-02 16:38:44 +00:00
Gareth Rees
0756e9d42a
Integrate eq-hash and eqv-hash from scheme-malloc.c.
...
Copied from Perforce
Change: 180285
ServerID: perforce.ravenbrook.com
2012-11-02 16:04:06 +00:00
Gareth Rees
ef98f2a9c6
Support more kinds of hashtable via make-hashtable.
...
Fix bug in eqv (character objects now test equal if they represent the same character).
Copied from Perforce
Change: 180284
ServerID: perforce.ravenbrook.com
2012-11-02 16:02:05 +00:00
Gareth Rees
4922259f66
Integrate string=?, make-eqv-hashtable, and make-hashtable.
...
Copied from Perforce
Change: 180283
ServerID: perforce.ravenbrook.com
2012-11-02 15:54:41 +00:00
Gareth Rees
05dacb91bb
Integrate string=?, make-eqv-hashtable, make-hashtable from scheme-malloc.c.
...
Copied from Perforce
Change: 180282
ServerID: perforce.ravenbrook.com
2012-11-02 15:43:07 +00:00
Gareth Rees
d984d32588
New constructor make_bool avoids boilerplate.
...
Hash function takes a length so that it (1) it can support strings containing NULs; (2) it doesn't have to check for NULs so runs a bit faster; and (3) it performs OK on addresses (which often contain zero bytes).
Hash tables have hash and comparison functions.
Implement string=?, make-eqv-hashtable and make-hashtable.
Copied from Perforce
Change: 180281
ServerID: perforce.ravenbrook.com
2012-11-02 15:39:19 +00:00
Gareth Rees
979961ecd7
Fix the dependent object.
...
Copied from Perforce
Change: 180279
ServerID: perforce.ravenbrook.com
2012-11-02 14:25:09 +00:00
Gareth Rees
64b873a2bc
New test case for leaf objects.
...
Copied from Perforce
Change: 180276
ServerID: perforce.ravenbrook.com
2012-11-02 13:40:20 +00:00
Gareth Rees
90e19d01b9
Merge change from scheme.c (implementation apply).
...
Share generation chain between pools.
No need for leaf_fmt at the moment.
Copied from Perforce
Change: 180275
ServerID: perforce.ravenbrook.com
2012-11-02 13:40:08 +00:00
Gareth Rees
9d47c8fd46
Integrate apply from scheme-malloc.c.
...
Copied from Perforce
Change: 180270
ServerID: perforce.ravenbrook.com
2012-11-02 12:45:22 +00:00
Gareth Rees
74494e0a38
Implement apply.
...
Copied from Perforce
Change: 180269
ServerID: perforce.ravenbrook.com
2012-11-02 12:44:20 +00:00
Gareth Rees
10b15a188c
Integrate references to documentation.
...
Copied from Perforce
Change: 180258
ServerID: perforce.ravenbrook.com
2012-11-02 11:58:38 +00:00
Gareth Rees
42755dedcc
Add references to documentation.
...
Copied from Perforce
Change: 180256
ServerID: perforce.ravenbrook.com
2012-11-02 11:57:16 +00:00
Gareth Rees
ddb4cc823c
Merge changes from scheme.c into scheme-advanced.c:
...
1. Deletion of keys in hash tables.
2. Forwarding of character objects on 64-bit platforms.
3. Fix to hash table probe sequence.
4. Comments in Scheme source.
5. Fix to define (implicit begin).
6. Extend equal? to vectors and strings.
7. Add references to R4RS documentation.
8. Implement list-tail, list-ref, open-output-file, close-input-port, close-output-port, write, write-string, newline, hashtable?, hashtable-size, hashtable-delete!, hashtable-contains?, hashtable-keys.
9. Fix bug (buckets might be scanned before dependent object is set).
10. Non-interactive mode.
Copied from Perforce
Change: 180255
ServerID: perforce.ravenbrook.com
2012-11-02 11:50:33 +00:00
Gareth Rees
6c7e10b9aa
Integrate changes from scheme-malloc to scheme.
...
Add test target to Makefile.
Copied from Perforce
Change: 180253
ServerID: perforce.ravenbrook.com
2012-11-02 11:19:45 +00:00
Gareth Rees
1c7c0acc5c
Make sure that probe sequence visits all buckets in the hash table by (a) ensuring that hash tables are a power of 2 in size; (b) ensuring that the probe step is odd.
...
Copied from Perforce
Change: 180252
ServerID: perforce.ravenbrook.com
2012-11-02 11:16:10 +00:00
Gareth Rees
54da8d4bc3
Chatter only if interactive.
...
Copied from Perforce
Change: 180251
ServerID: perforce.ravenbrook.com
2012-11-02 10:58:29 +00:00
Gareth Rees
efe5998a62
Add non-interactive execution.
...
Implement list-tail and list-ref.
Copied from Perforce
Change: 180249
ServerID: perforce.ravenbrook.com
2012-11-02 10:24:39 +00:00
Gareth Rees
daf132a970
Implement string-hash and correct error messages.
...
Copied from Perforce
Change: 180244
ServerID: perforce.ravenbrook.com
2012-11-01 22:07:33 +00:00
Gareth Rees
4245b9766f
Merge changes from scheme-malloc.c to scheme.c.
...
Copied from Perforce
Change: 180242
ServerID: perforce.ravenbrook.com
2012-11-01 19:16:34 +00:00
Gareth Rees
a8a6b4ab5c
Segregate leaf objects into an amcz pool.
...
Copied from Perforce
Change: 180240
ServerID: perforce.ravenbrook.com
2012-11-01 18:14:41 +00:00
Gareth Rees
f8d48677d0
Fix bug in "define": no implied "begin" around function body.
...
Implement open-output-file, close-input-port, close-output-port, write, write-string, and newline.
Add Scheme test cases.
Copied from Perforce
Change: 180238
ServerID: perforce.ravenbrook.com
2012-11-01 18:05:34 +00:00
Gareth Rees
768d4870bb
Merge new hashtable stuff from scheme-malloc.c.
...
Fix bug in scheme.c (characters were only 8 bytes on 64-bit platforms, so can't be forwarded).
Copied from Perforce
Change: 180231
ServerID: perforce.ravenbrook.com
2012-11-01 15:37:43 +00:00
Gareth Rees
9f43a0a241
Add more hashtable features, including deletion (which we'll need for weak hashtables).
...
Copied from Perforce
Change: 180225
ServerID: perforce.ravenbrook.com
2012-11-01 14:37:45 +00:00
Gareth Rees
8cdceed6da
Try segregating leaf objects.
...
Copied from Perforce
Change: 180209
ServerID: perforce.ravenbrook.com
2012-10-31 22:52:39 +00:00
Gareth Rees
37c725f76b
Weak hash tables in scheme-advanced.c.
...
Copied from Perforce
Change: 180208
ServerID: perforce.ravenbrook.com
2012-10-31 22:13:46 +00:00
Gareth Rees
38a47fdecd
Branch scheme.c to scheme-advanced.c.
...
Copied from Perforce
Change: 180204
ServerID: perforce.ravenbrook.com
2012-10-31 19:10:58 +00:00
Gareth Rees
07782b09d6
Move old scheme to example/scheme/scheme-malloc.c
...
Provide instructions to build it.
Copied from Perforce
Change: 180185
ServerID: perforce.ravenbrook.com
2012-10-31 12:02:11 +00:00
Gareth Rees
57846b3f16
Improve the scheme example hashtable implementation:
...
1. Follow R6RS for naming of functions and arguments.
2. Grow the hashtable when half full.
Copied from Perforce
Change: 180184
ServerID: perforce.ravenbrook.com
2012-10-31 11:54:25 +00:00
Gareth Rees
ba1c150cba
Put explanations of the location dependency code into scheme.c. also, add lots of cross-references to the manual.
...
Copied from Perforce
Change: 180121
ServerID: perforce.ravenbrook.com
2012-10-28 19:13:56 +00:00