Commit Graph

50 Commits

Author SHA1 Message Date
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
Danny Yoo
197004495a Optimize cpt-table-lookup
(Tweaked by Eli.)

original commit: 8f2ea07ec5
2012-04-04 02:52:51 -04:00
Matthew Flatt
a0837b2453 first cut at submodules
original commit: 3d69dfab86
2012-03-09 10:34:56 -07:00
Matthew Flatt
90583ce572 adjust `raco ctool --c-mods' and related to work with places
That is, the generated declare_modules() function registers the
module-declaration code so that it is run in any new place, too.

Merge to 5.2.1

original commit: 481e061440
2012-01-19 13:14:02 -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
7d7888d2ba fix compiler bug related to lifting and unbox flonums
As variables are dropped for lifted functions, the bitmap
for flonum closure variables was not shifted down by the
number of dropped variables.

Closes PR 12259

original commit: 7680adf486
2011-10-05 19:25:59 -06:00
Eli Barzilay
569f5e20a9 Some selective #:when (not ...)' -> #:unless ...'.
original commit: 623c7493ed
2011-09-16 10:48:18 -04: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
eaed2b9eaf fix compiler/zo-parse for sequence splice
Merge to 5.1.2

original commit: 42f41d868a
2011-07-22 22:19:58 -04:00
Matthew Flatt
481f10a622 fix zo-parse of rename tables
original commit: 07a9cdd2a8
2011-07-13 10:45:19 -06:00
Matthew Flatt
ae33722071 fix `compiler/zo-parse' & co.
original commit: 69ad39d45c
2011-06-30 08:24:41 -06:00
Eli Barzilay
1ca7b10829 Fix "zo-parse.rkt" wrt the inclusion of `identity' in mzlib/etc, and
switch to racket (making `begin-with-definitions' redundant).

original commit: fc1b974cd2
2011-06-07 13:06:13 -04: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
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
Matthew Flatt
37f822ccb2 restore gen-id gensym so that decompiler works
original commit: 0a8e5e604e
2010-11-11 14:39:45 -07:00
Blake Johnson
8392dd8fa4 fixing logging and running code in zo-exs
original commit: 0688c18593
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
Jay McCarthy
4830a2d141 Removing debugging aid
original commit: 089e99fac6
2010-09-16 12:45:38 -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
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
b63f532735 encoding wraps and fixes for zo-marshal sharing
original commit: 54f2d34a2e
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
Blake Johnson
1d54bf17a5 zo-parse debugging and read in zo-exs
original commit: f27fe3d5c9
2010-09-10 14:46:01 -06:00
Eli Barzilay
9bebb5a98d Lots of "~e" to "~.s" changes.
original commit: 606b7f60dc
2010-08-25 17:17:01 -04: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
aee68bb788 cases for more complicated lexical renames
original commit: b062c900a1
2010-08-03 15:40:41 -06:00
Blake Johnson
2efb39c391 another all-from-module fix
original commit: 7653ce037b
2010-08-02 19:26:32 -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
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
6887ead2c5 handling top-level-renames and mark-barriers
original commit: 8df94dd746
2010-07-15 15:53:02 -06:00
Ryan Culpepper
c64f9c5582 Added uses of unstable/struct
original commit: 07f57aac9b
2010-07-13 12:07:47 -06:00
Jay McCarthy
304e5247ed Documenting make-hasheqv and using it
original commit: 7e485b8d28
2010-05-27 12:35:30 -06:00
Jay McCarthy
7b264d5089 Using placeholders in zo-parse for more cyclic datums
original commit: 035ee93911
2010-05-27 12:35:26 -06:00
Jay McCarthy
cac230bc93 Unifying some code
original commit: 5833f7cba4
2010-05-27 12:33:26 -06:00
Jay McCarthy
f0add80ef2 Do not read the entire zo at once
original commit: 2a934cb053
2010-05-24 13:14:36 -06:00
Jay McCarthy
cc82e80835 Separating bytes usage for next change
original commit: f67177f740
2010-05-24 13:14:36 -06:00
Matthew Flatt
fc1a05de68 fix decompiler
original commit: 6cfc0b481d
2010-05-08 07:37:07 -06:00
Matthew Flatt
0fcf163a4d rename all files .ss -> .rkt
original commit: 28b4043077
2010-04-27 16:50:15 -06:00