rust/src
Björn Steinbrink e56b3691c8 Use concrete types in glue functions
We used to have concrete types in glue functions, but the way we used
to implement that broke inlining of those functions. To fix that, we
converted all glue to just take an i8* and always casted to that type.

The problem with the old implementation was that we made a wrong
assumption about the glue functions, taking it for granted that they
always take an i8*, because that's the function type expected by the
TyDesc fields. Therefore, we always ended up with some kind of cast.

But actually, we can initially have the glue with concrete types and
only cast the functions to the generic type once we actually emit the
TyDesc data.

That means that for glue calls that can be statically resolved, we don't
need any casts, unless the glue uses a simplified type. In that case we
cast the argument. And for glue calls that are resolved at runtime, we
cast the argument to i8*, because that's what the glue function in the
TyDesc expects.

Since most of out glue calls are static, this saves a lot of bitcasts.
The size of the unoptimized librustc.ll goes down by 240k lines.
2013-07-13 18:23:08 +02:00
..
compiletest extra: add explicit ratchet-noise-percent option to benchmark ratchet, plus a few test breaking fixes. 2013-07-11 15:16:11 -07:00
driver Bring compiletest/rustpkg/driver up to date on std vs core 2013-07-04 16:30:48 -07:00
etc Fix problem with switching between Rust buffers. 2013-07-12 16:18:48 +10:00
libextra dlist: Use a DoubleEndedIterator for .mut_iter() and .mut_rev_iter() 2013-07-13 04:31:13 +02:00
librust Bump version numbers to 0.8-pre 2013-07-08 10:25:45 -07:00
librustc Use concrete types in glue functions 2013-07-13 18:23:08 +02:00
librustdoc auto merge of #7117 : jensnockert/rust/freestanding, r=cmr 2013-07-09 13:34:50 -07:00
librusti Fix tests 2013-07-11 18:57:19 -07:00
librustpkg auto merge of #7262 : nikomatsakis/rust/ref-bindings-in-irrefut-patterns, r=catamorphism 2013-07-08 18:49:46 -07:00
libstd auto merge of #7734 : alexcrichton/rust/issue-3395, r=sanxiyn 2013-07-12 21:40:36 -07:00
libsyntax auto merge of #7725 : msullivan/rust/default-methods, r=pcwalton 2013-07-12 17:28:28 -07:00
libuv@dfae9c3e95
llvm@2e9f0d21fe
rt auto merge of #7734 : alexcrichton/rust/issue-3395, r=sanxiyn 2013-07-12 21:40:36 -07:00
rustllvm force LLVM clean 2013-07-03 23:23:29 -04:00
test auto merge of #7734 : alexcrichton/rust/issue-3395, r=sanxiyn 2013-07-12 21:40:36 -07:00
README.txt Update doc references to new names for std, extra, and std::libc 2013-06-16 23:26:08 -07:00
snapshots.txt Update snapshots file 2013-06-25 16:43:58 +12:00

This is a preliminary version of the Rust compiler, libraries and tools

Source layout:

librustc/          The self-hosted compiler

libstd/            The standard library (imported and linked by default)
libextra/          The "extras" library (slightly more peripheral code)
libsyntax/         The Rust parser and pretty-printer

rt/                The runtime system
rt/rust_*.cpp      - The majority of the runtime services
rt/isaac           - The PRNG used for pseudo-random choices in the runtime
rt/bigint          - The bigint library used for the 'big' type
rt/uthash          - Small hashtable-and-list library for C, used in runtime
rt/sync            - Concurrency utils
rt/util            - Small utility classes for the runtime.
rt/vg              - Valgrind headers
rt/msvc            - MSVC support
rt/linenoise       - a readline-like line editing library

test/              Testsuite
test/compile-fail  - Tests that should fail to compile
test/run-fail      - Tests that should compile, run and fail
test/run-pass      - Tests that should compile, run and succeed
test/bench         - Benchmarks and miscellanea
test/pretty        - Pretty-printer tests
test/auxiliary     - Dependencies of tests

compiletest/       The test runner

librustpkg/        The package manager and build system

librusti/          The JIT REPL

librustdoc/        The Rust API documentation tool

llvm/              The LLVM submodule

libuv/             The libuv submodule

rustllvm/          LLVM support code

libfuzzer/         A collection of fuzz testers

etc/               Scripts, editor support, misc