Commit Graph

58 Commits

Author SHA1 Message Date
Matthew Flatt
4be962e720 fix problems with references to bindings at higher phases
original commit: 577cf4592e
2012-06-27 09:57:50 -06:00
Matthew Flatt
359eb87abb fix zo-parse, zo-struct, etc. for context in whole-module import
original commit: 6173b7eb05
2012-06-23 05:21:53 -07:00
Matthew Flatt
c9f62c0bc5 fix `compiler/zo-parse', etc. for phase-shift addition
original commit: d93f4214a4
2012-05-13 09:00:28 -06:00
Matthew Flatt
ac6210c42e save modidx submodule path in bytecode form
This change should have been part of 9ba663aa77.

original commit: f099eec2af
2012-04-26 21:45:00 -06:00
Matthew Flatt
a0837b2453 first cut at submodules
original commit: 3d69dfab86
2012-03-09 10:34:56 -07:00
Matthew Flatt
52fa72bd6b first cut at cross-module function inlining
Inline only trivial functions, such as `(empty? x)' -> `(null? x)',
to avoid generating too much code.

Bytecode includes a new `inline-variant' form, which records a
version of a function that is suitable for cross-module inlining.
Mostly, the variant let the run-time system to retain a copy
of the bytecode while JITting (and dropping the bytecode of)
the main variant, but it may be different from the main variant
in other ways that make it better for inlining (such a less loop
unrolling).

original commit: 779b419c03
2011-11-30 07:39:36 -07:00
Matthew Flatt
278f090e83 generalized `begin-for-syntax'
original commit: d3c56c9f13
2011-09-08 14:06:00 -06:00
Matthew Flatt
053734c4c8 fix compiler handling of top-/module-level constants
The JIT and bytecode compiler disagreed on the definition of
"constant". Now there are two levels: "constant" means constant across
all instantiations, and "fixed" means constant for a given instantation.
The JIT uses this distinction to generate direct-primitive calls
or not. (Without the distinction, a direct jump to `reverse' could
be wrong, because `racket/base' might get instantiated with the
JIT disabled or not.)

Also, fixed a bug in the JIT's `vector-set!' code in the case that
the target vector is a top-/module-level reference that is ready,
fixed, or constant.

original commit: 7eb2042bd9
2011-08-19 06:32:44 -06:00
Matthew Flatt
ae33722071 fix `compiler/zo-parse' & co.
original commit: 69ad39d45c
2011-06-30 08:24:41 -06:00
Matthew Flatt
f17d94056f fix tl-map parse & marshal
original commit: 8ad8d5b7f7
2011-05-09 12:24:05 -06:00
Matthew Flatt
ee407d6610 fix varref' in compiler/zo-structs', etc.
and sync docs better with implementation

original commit: a4da2a3f4c
2011-05-09 09:43:32 -06:00
Matthew Flatt
87373a2e0c reorgnize datatypes of less common bytecode forms
removing a layer of indirection, and setting up
 for an internal reorganization of the compiler code

original commit: e9721058fb
2011-05-06 06:56:23 -06:00
Matthew Flatt
805b8627f3 fix zo-marshal' for #f toplevel-map in lam'
original commit: 87a4132b40
2011-05-03 14:43:27 -06:00
Matthew Flatt
1955c935ff break link to namespaces from from closures over top-/module-level vars
- the `lam' structure from `compiler/zo-struct' changed to include a
   `toplevel-map' field

 This change helps solve a finalization problem in `racket/draw',
 which in turn sigificantly reduces the peak memory use of `raco setup'
 during the doc-building phase (because some documents load `racket/draw'
 to render images, and multiple copies of `racket/draw' were retained
 before finalization was fixed).

 The change is an extreme way to solve a specific finalization
 problem, but it's a kind of space-safety improvement; space safety
 almost never matters, but when it does, then working around a lack of
 space safety is practically impossible. In this case, it's not clear
 how to otherwise solve the `racket/draw' finalization problem.

 The improvement doesn't change the representation of closures, but it
 requires special cooperation with the GC. All closures in a module
 continue to share the same array of globals (plus syntax objects);
 that is, instead of completely flat closures, Racket uses a two-level
 environment where top-/module-level variables are grouped
 together. The code half of a closure now records which
 top-/module-level variables the body code actually uses, and the mark
 phase of GC consults this information to retain only parts of the
 top-/module-level environment frame that are actually used by some
 closure (or all of the frame if it is accessible through some other
 route).  In other words, the GC supports a kind of "dependent
 reference" to an array that is indexed by positions into the array
 --- except that the code is more in the "Racket" directory instead of
 the "GC" directory, since it's so specific to the closure
 representation.

original commit: 2ada6d0e89
2011-05-03 06:57:49 -06:00
Matthew Flatt
9f2fba9625 safe-for-space repairs for functions with rest args
original commit: 0754ad0114
2011-04-22 15:59:33 -06:00
Matthew Flatt
b3fd71415d cache loaded compiled modules
using a SHA1 hash stored in the marshaled bytecode; this cache
 lowers the cost of sandboxes or other uses of multiple namespaces
 when the code inspector doesn't change; the caching is almost
 transparent, but an eval handler might be called with compiled
 code that cannot be written

original commit: 97ce26b182
2011-04-16 13:24:58 -06:00
Blake Johnson
345f30f7e5 rolling back some unnecessary changes
original commit: a315f79ebd
2010-10-29 19:50:12 -06:00
Blake Johnson
b8122efb82 using hasheq in zo-marshal
original commit: 43e151f340
2010-10-29 19:50:11 -06:00
Blake Johnson
7e97041b8d debugging
original commit: 77c46d07ee
2010-10-29 19:50:11 -06:00
Blake Johnson
6b8a9b0861 Avoiding cycles in everything but closures
original commit: 7bffbc31a2
2010-10-29 19:50:11 -06:00
Blake Johnson
7aac10e938 offset calculation fix
original commit: d84b78daab
2010-10-29 19:50:11 -06:00
Blake Johnson
d2ad91ae38 removing indirects from zo handling
original commit: c88eb704c7
2010-09-16 12:45:37 -06:00
Blake Johnson
aa0d3e18ae fixing pr11175, added only-rest-arg-not-used flag
original commit: 3433af0a30
2010-09-10 14:46:04 -06:00
Blake Johnson
4c5dfd88af fixing pr11036 by adding plain certificates
original commit: 170ab47dc2
2010-09-10 14:46:04 -06:00
Blake Johnson
1f08f65282 removing debugging information
original commit: 6338a97e0a
2010-09-10 14:46:04 -06:00
Blake Johnson
78d5856d4d never sharing hashes and trace debugging
original commit: 0d136ba4c7
2010-09-10 14:46:03 -06:00
Blake Johnson
070d86473d traversing inside closures and using a seen set for lists
original commit: 32a9e60abe
2010-09-10 14:46:03 -06:00
Blake Johnson
b8fe95cd26 fixing closure problem
original commit: 2dfaab00f4
2010-09-10 14:46:03 -06:00
Blake Johnson
a5f557b90e zo-marshal fixes and switching back to prefabs
original commit: ecc9ceb842
2010-09-10 14:46:03 -06:00
Blake Johnson
46f22d2882 handling closures while writing symbol table
original commit: c2fee2a2f0
2010-09-10 14:46:03 -06:00
Blake Johnson
b816da148d quoting parameter and not prefab structs
original commit: 893294674a
2010-09-10 14:46:02 -06:00
Blake Johnson
b63f532735 encoding wraps and fixes for zo-marshal sharing
original commit: 54f2d34a2e
2010-09-10 14:46:02 -06:00
Blake Johnson
4379002ddc traverse while writing rather than a separate step
original commit: 88dcab6b5a
2010-09-10 14:46:02 -06:00
Blake Johnson
ae4b770939 zo-marshal fixes and read.c fix for hash tables in symbol table
original commit: 9599304ca9
2010-09-10 14:46:02 -06:00
Blake Johnson
817b3186d9 zo-marshal single out-anything function and zo-parse debugging
original commit: 37f07cb68b
2010-09-10 14:46:01 -06:00
Matthew Flatt
4b9635cb70 fix bytecode-writing inconsistencies related to syntax objects and paths
and improve organization of the docs

original commit: 0d9f5016ba
2010-08-17 17:18:24 -06:00
Blake Johnson
f907cbf361 better traversal for more sharing in zo-marshal and some refactoring.
original commit: f4abd35f5c
2010-08-04 17:09:57 -06:00
Blake Johnson
aee68bb788 cases for more complicated lexical renames
original commit: b062c900a1
2010-08-03 15:40:41 -06:00
Blake Johnson
c998fe85e9 applying make-prefab-struct
original commit: 551ef5ba30
2010-08-02 19:27:28 -06:00
Blake Johnson
2efb39c391 another all-from-module fix
original commit: 7653ce037b
2010-08-02 19:26:32 -06:00
Blake Johnson
f7c42c1e6a Added case in zo-marshal for prefab structs
Made quoted not-prefab so it isn't captured by prefab case

original commit: 63c6cc5d2c
2010-07-30 15:44:52 -06:00
Blake Johnson
7c32e885f3 better certificate handling in zo-parse and zo-marshal
original commit: 80c6ba482d
2010-07-30 14:37:17 -06:00
Blake Johnson
8e7a64be3f added another case for all-from-module renames
original commit: 2dfd340031
2010-07-28 14:45:07 -06:00
Blake Johnson
d8dae45321 Do not use CPT_ESCAPE for every CPT_QUOTE, instead if it was a protect-quote, then just put the CPT_QUOTE in.
original commit: 53fdc09e7a
2010-07-27 13:39:43 -06:00
Jay McCarthy
9b95b87049 Fixing parts of zo-marshal re protect-quote; parallelizing zo-test; there is no the path error again in zo-marshal though
original commit: 8d36dfad81
2010-07-27 11:10:54 -06:00
Jay McCarthy
99c7fa04e2 Fixing up a few things in zo-parse/etc
original commit: 28432037af
2010-07-26 12:18:01 -06:00
Blake Johnson
78faf5e6d6 zo-marshal wrap fixes, optional port for zo-parse
original commit: 8eeed89982
2010-07-26 12:06:02 -06:00
Blake Johnson
1325701f82 handling top-level-renames and mark-barriers
(cherry picked from commit 8df94dd746)

original commit: 06c829d8c0
2010-07-18 18:57:26 -04:00
Blake Johnson
6887ead2c5 handling top-level-renames and mark-barriers
original commit: 8df94dd746
2010-07-15 15:53:02 -06:00
Matthew Flatt
d35c8cac36 fix validation of module .zo exp-time content, and fix zo-marshal
original commit: c7c8f56e11
2010-07-08 17:17:42 -06:00