racket/collects/tests/racket
Matthew Flatt 0d1056dbed fix potential bad interaction of module caching and JIT assumption
The JIT wants to detect calls to functions bound to module-level
variables that are always instantiated to a procedure of a particular
arity, in which case it can avoid some checks.  The problem is that
bytecode and JITted code can be shared via the module cache across
namespaces that use different modules to implement a particular module
path or that enable the JIT differently.  In particular, starting with
one that has a procedure binding and then using one (in a different
namespace) that has a non-procedure binding could lead to a crash.

Defend against this possibility by never treating imported variables
as constant in that sense. The JIT detects imported variables through
a new import map in the prefix.

This change may slow code. My guess is that it will have no
performance impact in practice, due to cross-module inlining,
although I can construct a microbenchmark that slows by 20%.
2012-06-27 09:57:50 -06:00
..
benchmarks Simplify away uses of "-t" in `drdr:command-line'. 2012-06-19 12:52:22 -04:00
embed-planet-1 fix Planet resolver for submodule tests 2012-04-19 08:15:11 -06:00
embed-planet-2
lang
place/distributed [Distributed Places] Renamed uses of vm to node, removed export of coercion functions 2012-03-30 11:58:39 -06:00
stress Sort paths before fuzzing, to make drdr runs reproducible. 2012-02-29 12:01:37 -05:00
ttt Recketizing much in `net/*', mass ".ss" -> ".rkt" conversion in .scrbl files. 2011-06-20 04:27:14 -04:00
.gitignore
all.rktl add `prop:cpointer' 2012-02-14 14:25:55 -07:00
async-channel.rktl
awk.rktl
basic.rktl Extend `regexp-replace*' to accept a start/end-position. 2012-06-22 12:00:48 -04:00
binc.rktl
bool.rkt add xor, adjust implies following Carl's comments 2012-02-20 06:25:37 -06:00
boundmap-test.rktl
bytes.rktl bytes-join 2011-02-02 10:37:57 -07:00
cache-image-snip-test.rktl Make some .rktl tests run with "racket". 2012-06-19 03:18:23 -04:00
cat.rkt
censor.rktl
chaperone.rktl change `impersonate-struct' to require evidence that a field is mutable 2012-05-27 15:37:45 -06:00
char-set.rktl fix SRFI-14 test 2011-01-27 08:04:39 -07:00
chez-module.rktl
cm.rktl cm: collect dependencies for submodules 2012-05-12 00:55:12 -06:00
cmdline.rktl
com-category.rkt add ffi/com', ffi/unsafe/com' 2012-01-10 18:35:32 -07:00
com.rkt ffi/com: add support for type descriptions on values 2012-04-16 08:47:13 -06:00
compat.rktl
compile.rktl Recketizing much in `net/*', mass ".ss" -> ".rkt" conversion in .scrbl files. 2011-06-20 04:27:14 -04:00
contmark.rktl fix optimizer for impersonated continuation mark keys 2012-06-27 09:57:50 -06:00
contract-helpers.rkt fix a bug in the arity checking for contracts 2011-07-15 21:25:10 -05:00
contract-mzlib-test.rktl further error message convention refinements 2012-06-22 09:47:59 +08:00
contract-opt-tests.rkt add missing require, fix opt/c test suite 2011-03-29 22:43:18 -05:00
contract-rand-test.rkt missed one place to rename contract-generate 2011-11-25 13:38:26 -06:00
contract-stress-argmin.rkt added two stress tests for ->i performance 2010-10-22 14:07:30 -05:00
contract-stress-take-right.rkt added two stress tests for ->i performance 2010-10-22 14:07:30 -05:00
contract-test.rktl fix optimizer for impersonated continuation mark keys 2012-06-27 09:57:50 -06:00
control.rktl racket/control: add aliases and update %/fcontrol 2012-06-14 17:33:43 -04:00
cstruct.rktl ffi: fix _x-pointer/null' when _x' has a supertype 2012-02-17 06:36:23 -07:00
ctool.rkt fix raco ctool --c-mods' for racket' 2012-01-19 13:14:02 -07:00
date.rktl change contract on second' of date' to allow only 1 leap second 2012-06-23 02:04:55 -07:00
deep.rktl
dict.rktl
embed-in-c.c adjust `raco ctool --c-mods' and related to work with places 2012-01-19 13:14:02 -07:00
embed-in-c.rkt adjust `raco ctool --c-mods' and related to work with places 2012-01-19 13:14:02 -07:00
embed-me1.rkt
embed-me1b.rkt
embed-me1c.rkt
embed-me1d.rkt
embed-me1e.rkt
embed-me2.rkt
embed-me3.rkt
embed-me4.rktl
embed-me5.rkt
embed-me6.rkt
embed-me8.c
embed-me9.rkt
embed-me10.rkt
embed-me11-rd.rkt
embed-me11.rkt
embed-me12-rd.ss
embed-me12.ss
embed-me13.rkt more `raco exe' cycle repairs 2011-10-07 10:32:49 -06:00
embed-me14.rkt more `raco exe' cycle repairs 2011-10-07 10:32:49 -06:00
embed-me15-one.rkt first cut at submodules 2012-03-09 10:34:56 -07:00
embed-me15.rkt raco exe' uses a main' submodule, if any 2012-03-09 10:34:57 -07:00
embed-me16.rkt raco exe' uses a main' submodule, if any 2012-03-09 10:34:57 -07:00
embed-place.rkt adjust `raco ctool --c-mods' and related to work with places 2012-01-19 13:14:02 -07:00
embed.rktl raco exe' uses a main' submodule, if any 2012-03-09 10:34:57 -07:00
etc.rktl
expand.rktl Recketizing much in `net/*', mass ".ss" -> ".rkt" conversion in .scrbl files. 2011-06-20 04:27:14 -04:00
fact.rktl
ffi-orig-place.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
file.rktl doc clarifications and tests for some file-locking corners 2011-09-17 07:29:07 -06:00
filelib.rktl fix `find-files' to convert an initial string into a path 2012-01-13 07:15:15 -07:00
fixnum.rktl clean up sequence & generator tests 2011-03-16 16:21:26 -06:00
flonum.rktl A long overdue scan to eliminate files without terminating newlines. 2011-06-28 02:01:41 -04:00
for-submod.rkt fix resolution of relative module path in a submodule 2012-04-24 16:15:29 -06:00
for-util.rkt add for/sum', for/product', etc. 2011-07-27 05:47:46 +01:00
for.rktl make in-sequences' and in-cycle' accept 0 sequences 2011-11-28 13:51:24 -07:00
foreign-test.c ffi: fix big-endian s->c conversion of bytes and shorts 2012-05-14 21:57:09 -06:00
foreign-test.rktl ffi/unsafe: new error message convention at primitives 2012-06-01 19:03:43 -07:00
function.rktl Rewrite compose' and add compose1'. 2011-06-14 19:02:30 -04:00
generator.rktl clean up sequence & generator tests 2011-03-16 16:21:26 -06:00
has-submod.rkt fix resolution of relative module path in a submodule 2012-04-24 16:15:29 -06:00
head.rktl
id-table-test.rktl
imap.rktl net/imap: add TLS support 2012-03-10 10:47:22 -07:00
iostream.rktl fix I/O race in test 2012-01-09 13:29:56 -07:00
ktest.rktl
kw.rktl
link.rkt racket/sandbox: treat linked collections like others 2012-05-14 09:35:06 -06:00
list.rktl racket/list: adjust `add-between' keyword handling 2012-06-26 11:00:11 -06:00
load-handler.rkt more load[/use-compiled] handler fixes for submodules 2012-03-13 14:31:40 -06:00
loadable.rktl Recketizing much in `net/*', mass ".ss" -> ".rkt" conversion in .scrbl files. 2011-06-20 04:27:14 -04:00
loadtest.rktl
logger.rktl add `log-max-level' 2012-02-26 22:13:02 -05:00
long-cmdline.rkt fix too-early large-allocation check 2011-06-30 08:56:28 -06:00
loop.rktl
ltest.rktl Recketizing much in `net/*', mass ".ss" -> ".rkt" conversion in .scrbl files. 2011-06-20 04:27:14 -04:00
macro.rktl make #%plain-module-begin' transformer detect module*' in stop list 2012-06-13 17:07:06 +08:00
macrolib.rktl
math.rktl Fixed erroneously imprecise type for +nan.f literal (now Single-Flonum-Nan) 2012-06-09 17:46:04 -06:00
moddep.rktl preserve submoduleness in module path index for expanded submodules 2012-04-24 21:10:28 -06:00
modprot.rktl keyword-function repairs 2011-08-09 16:33:17 -06:00
module-reader.rktl
module.rktl fix potential bad interaction of module caching and JIT assumption 2012-06-27 09:57:50 -06:00
mpair.rktl
mz-tests.rktl first cut at submodules 2012-03-09 10:34:56 -07:00
mzlib-tests.rktl fix mistakes uncovered by optimizer warnings 2011-05-03 06:57:48 -06:00
mzlonglong.c
mzq.rktl
name.rktl
namespac.rktl fix `namespace-require' on marked syntax 2011-11-18 20:06:15 -07:00
nch.rktl
net.rktl add optional newline argument to `base64-encode' 2012-02-21 06:14:44 -07:00
number.rktl fix test to be reliable 2012-02-26 22:13:02 -05:00
numstrs.rktl Fix printing of single-precision floats. 2012-06-09 19:35:37 -04:00
object-old.rktl
object.rktl racket/class: add send+ for functional style OO 2012-06-26 21:11:58 -04:00
oe.rktl
old-make-zo.rkt fix `raco make --no-deps' 2011-12-13 06:13:17 -07:00
optimize.rktl racket/flonum: add `flexpt' 2012-05-07 20:41:14 -06:00
pack.rktl
package-gen.rktl
package.rktl
parallel-build.rkt fix `raco make -j' 2012-01-19 13:14:02 -07:00
parallel.rktl add test to run test suite in multiple places 2011-09-16 16:19:04 -06:00
param.rktl
path.rktl fix non-portable test 2012-05-17 08:40:34 -06:00
pathlib.rktl if only a Unix root is shared, don't make a path relative 2011-08-24 20:08:20 -06:00
pconvert.rktl fix `print-convert' on cyclic hash key 2011-11-26 17:09:23 -07:00
place-chan-rand-help.rkt random testing for messages sent over place channels 2011-06-17 18:46:59 +08:00
place-chan-rand.rkt place-channel fixes 2011-09-14 20:43:36 -06:00
place-channel-fd.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
place-channel-fd2.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
place-channel-ffi.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
place-channel-fnl.rkt fix place refcount 2011-10-03 06:39:18 -06:00
place-channel-limits.rkt more memory accounting fixes for places 2011-10-11 11:26:11 -06:00
place-channel-socket.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
place-channel.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
place-master-gc.rkt add missing GC registration for places 2011-10-11 06:45:14 -06:00
place-msg-gc.rkt places: fix GC of unreceived place-channel messages 2011-11-14 18:04:45 -07:00
place-parallel.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
place-ports.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
place-stdio.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
place.rktl Pretty up places test code 2012-02-09 08:52:05 -07:00
place1.rkt fix multiple places imported into the same module 2012-02-09 10:04:57 -07:00
place2.rkt fix multiple places imported into the same module 2012-02-09 10:04:57 -07:00
places.rkt fix multiple places imported into the same module 2012-02-09 10:04:57 -07:00
port.rktl racket/base: add some missing predicates 2012-05-29 11:01:52 -06:00
portlib.rktl racket/port: fix problems with `read-bytes!-evt' 2012-06-24 07:38:09 -06:00
pp-regression.rktd A long overdue scan to eliminate files without terminating newlines. 2011-06-28 02:01:41 -04:00
pretty.rktl fix `pretty-print' confusion about quasiquote 2011-03-11 08:02:30 -06:00
print.rktl fix `print-syntax-width' for +inf.0 2012-06-10 06:58:06 +08:00
procs.rktl fix interaction of `procedure-arity-includes?' and other things 2012-06-25 17:30:03 -06:00
prompt-sfs.rkt
prompt-tests.rktl fix problem with continuations 2012-02-28 15:35:38 -07:00
prompt.rktl Check for proxied prompt tags when needed 2012-06-11 21:04:45 -04:00
quiet.rktl old typo 2010-11-01 08:25:35 -04:00
read.rktl extend string-literal syntax to allow surrogate-style \u pairs 2012-03-12 21:03:20 -06:00
README
readtable.rktl
resource.rktl Finally there should be no temp file leftovers now. 2011-08-29 22:12:25 -04:00
restart.rktl
runaway-place.rkt switch places tests to raco test' instead of racket -tm' protocol 2012-03-29 14:55:14 -06:00
runflats.rktl Recketizing much in `net/*', mass ".ss" -> ".rkt" conversion in .scrbl files. 2011-06-20 04:27:14 -04:00
rx.rktl fix `regexp-match' performance for short matches on long strings 2011-08-18 09:26:09 -06:00
sandbox-gui.rkt racket/sandbox: use `gui-available?' at sandbox creation 2012-03-02 07:47:16 -07:00
sandbox.rktl further error message convention refinements 2012-06-22 09:47:59 +08:00
scheme-tests.rktl Fix the path relative functions to return a string for a path input, 2011-07-10 06:53:44 -04:00
sequence.rktl Fixed `stream-add-between'. 2012-05-04 20:18:38 -04:00
serialize.rktl racket/serialize: fix for submodules 2012-05-27 14:39:51 -06:00
set.rktl added set/c and made sets print as set, seteq, or seteqv 2011-01-08 13:49:01 -06:00
setup.rktl Fix the path relative functions to return a string for a path input, 2011-07-10 06:53:44 -04:00
shared-tests.rktl Recketizing much in `net/*', mass ".ss" -> ".rkt" conversion in .scrbl files. 2011-06-20 04:27:14 -04:00
shared.rktl fix shared' for #:auto' fields and constructors without `make-' 2011-01-05 13:52:11 -07:00
srfi.rktl
stream.rktl add stream' to racket/stream' 2011-12-08 09:25:34 -07:00
string-mzlib.rktl add argument to `regexp-try-match' to match docs 2011-01-17 15:18:05 -07:00
string.rktl Adjust the keyword names for string-join' following the change to add-between'. 2012-06-26 13:45:16 -04:00
struct.rktl further error message convention refinements 2012-06-22 09:47:59 +08:00
structlib.rktl add date*' and exn:fail:syntax:unbound' 2011-09-29 09:22:10 -06:00
stx.rktl refine lexical scope for syntax objects from different modules 2012-05-12 00:59:14 -06:00
submodule.rktl fix `syntax-local-module-exports' to work with submodules 2012-05-14 21:57:10 -06:00
subprocess.rktl fix race in subprocess test 2011-12-13 06:13:16 -07:00
sync.rktl racket/base: add some missing predicates 2012-05-29 11:01:52 -06:00
syntax-tests.rktl
syntax.rktl add "alias" and "converted-arguments-variant" properties 2012-05-17 10:58:22 -06:00
syntaxlibs.rktl fix mistakes uncovered by optimizer warnings 2011-05-03 06:57:48 -06:00
tcp.rktl
testing.rktl fix reported arity of `map' et al. 2012-02-09 16:49:34 -07:00
thread.rktl racket/base: add some missing predicates 2012-05-29 11:01:52 -06:00
threadlib.rktl
thrport.rktl
trace.rktl racket/trace: fix for expr-style printing (i.e., default `print' mode) 2011-04-11 10:01:25 -06:00
trait.rktl
udp.rktl
uinc.rktl
uinc2.rktl
uinc3.rktl
uni-norm.rktl Fixes more spelling errors. 2011-02-04 19:44:13 -07:00
unicode.rktl
unit.rktl
unitsig.rktl
unsafe.rktl Add box-cas!' and unsafe-box*-cas!'. 2012-05-03 19:19:24 -06:00
vector.rktl more error-message conversion 2012-05-27 09:03:19 -06:00
version.rktl
will.rktl fix test to work right with imprecise GC 2012-02-02 06:32:55 -07:00
zo-marshal.rktl
ztest.rktl Recketizing much in `net/*', mass ".ss" -> ".rkt" conversion in .scrbl files. 2011-06-20 04:27:14 -04:00

To run most of the tests, run:
 > (load "PATHTOHERE/all.ss")
where PATHTOHERE is the path to this directory.  

Test failures may cause the test to stop before finishing, but most
test failures will let the test continue, and a summary message at the
end will enummerate the failures that occurred.

Some files and directories are created (in the current directory)
during the run. The files are named "tmp<N>" where <N> is a number.
The directory is named "deep". If the test suite passes, the directory
should be removed, but some "tmp<N>" files will remain. (The "tmp<N>"
files are automatically replaced if the test suite is run again.)

Additionally, test `expand' by running:
 > (load "PATHTOHERE/expand.ss")

Test compilation and writing/reading compiled code with:
 > (load "PATHTOHERE/compile.ss")

Run the standard tests with no output except for the results with:
 > (load "PATHTOHERE/quiet.ss")
(Also get an error code -- use with scripts.)

Run 3 copies of the test suite concurrently in separate threads:
 > (load "PATHTOHERE/parallel.ss")


Please report bugs using Help Desk, or
  http://bugs.racket-lang.org/
or (as a last resort) send mail to
  racket@racket-lang.org