Commit Graph

2474 Commits

Author SHA1 Message Date
Brian Anderson
2e12fbfc06 Support octal #fmt conversions 2011-04-26 20:20:17 -04:00
Brian Anderson
66b59e4b05 Make #fmt char conversions behave like printf 2011-04-26 20:20:17 -04:00
Graydon Hoare
e77f5b1561 Speed up calls to get_tydesc and kill cname-redundant glue generation. 2011-04-26 17:19:44 -07:00
Graydon Hoare
592cd5fa30 Disable frame-pointer elimination (not sure how this didn't get commited before). 2011-04-26 15:21:20 -07:00
Graydon Hoare
bc6e981537 Merge branch 'master' of ssh://github.com/graydon/rust 2011-04-26 20:39:33 +00:00
Graydon Hoare
418b23a538 Various bits of trans lint, nothing major. 2011-04-26 20:39:25 +00:00
Patrick Walton
ba3a4f6cc6 rustc: Cap ridiculous type name sizes 2011-04-26 13:08:48 -07:00
Patrick Walton
79d27ccb58 stdlib: Add a silly ANSI color library 2011-04-26 13:08:48 -07:00
Marijn Haverbeke
6b11f6c46f Change rustc to use GetOpts rather than ad-hoc command-line parsing
NOTE: all 'long' parameters now use a double dash, so --shared, rather
than gcc-style -shared.
2011-04-26 20:32:14 +02:00
Marijn Haverbeke
74c7457131 Add GetOpts module to std 2011-04-26 20:30:44 +02:00
Marijn Haverbeke
d0ed2e384a Add _str.slice to std lib 2011-04-26 17:38:14 +02:00
Patrick Walton
2746d20c83 rustc: Add a missing return value to Collect.ty_of_item() 2011-04-25 18:15:48 -07:00
Graydon Hoare
cf23db6be5 A little more guarding against wasted work in ty, typeck. 2011-04-25 18:08:13 -07:00
Patrick Walton
c4e13cd1fa rustc: Use the abbreviated type names to avoid LLVM bitcode size explosion 2011-04-25 17:00:25 -07:00
Graydon Hoare
da328b1ba9 Kick ty_var and ty_local entries out of the type store. Pre-compute presence of var, local, param and bound_params in types. 2011-04-25 16:40:25 -07:00
Patrick Walton
e0479c902b rustc: Add a -save-temps option to save bitcode and write output simultaneously; document command line switches 2011-04-25 14:08:12 -07:00
Patrick Walton
e102413aad rustc: Pass a "type context" around instead of directly passing the type store; prep for removing type annotations 2011-04-25 12:15:55 -07:00
Graydon Hoare
b258060a94 Avoid type_store hashtable access for a variety of cases, probably only ty_var matters. 2011-04-25 09:49:08 -07:00
Graydon Hoare
485399a8d5 Skip substitution and/or binding when there's no work to do. 2011-04-25 05:39:18 +00:00
Graydon Hoare
1b9e6b3ad2 Bind tag members as aliases rather than new locals. 2011-04-25 04:12:40 +00:00
Graydon Hoare
5fe21b5af0 Skip likely-zero initial probe, speed up map.rs. 2011-04-25 04:12:33 +00:00
Graydon Hoare
912c1fc81c Fix busted iter/put code. Un-XFAIL foreach-box-drop.rs. 2011-04-23 14:22:10 -07:00
Patrick Walton
2b298fa3e8 rustc: Use a silly "magic numbers" hack; seems to speed things up a bit. 2011-04-22 19:52:30 -07:00
Patrick Walton
94e5ca4df8 rustc: Include the cname in the hash to increase entropy 2011-04-22 19:26:00 -07:00
Patrick Walton
e0eccaddb2 rustc: Thread the type store through everything that needs to access type structures 2011-04-22 17:00:46 -07:00
Patrick Walton
3d62c9adf3 rustc: Move the type serialization logic to an Encode module 2011-04-22 14:48:25 -07:00
Patrick Walton
14d1c53a9c rustc: Remove direct access to the cname field of types 2011-04-22 13:45:21 -07:00
Patrick Walton
c7473c8260 rustc: Switch @ty.t to ty.t so that we can change it to a uint 2011-04-22 12:27:52 -07:00
Rafael Ávila de Espíndola
fac8cc3b06 Use -c in the Makefiles. 2011-04-22 15:15:52 -04:00
Patrick Walton
c1335510d5 rustc: Eliminate the direct use of ty.t.struct 2011-04-22 12:09:09 -07:00
Rafael Ávila de Espíndola
9eb1479746 Dispose the module.
Thanks to brson for noticing it.
2011-04-22 14:49:02 -04:00
Patrick Walton
106f783b33 rustc: Add a fast path when the types to be unified are exactly equal 2011-04-22 10:51:32 -07:00
Patrick Walton
9edaa7dba3 rustc: Add a fast path if there are no type substitutions to be made 2011-04-22 10:37:51 -07:00
Patrick Walton
9ab9bd9cc2 rustc: Improve the efficiency of lookup_item_type() slightly 2011-04-22 10:19:57 -07:00
Marijn Haverbeke
2361b65526 Switch to binary search in codemap.lookup_pos
Patrick observed excessive slowness when looking up positions
in rustc. This might help.
2011-04-22 12:11:00 +02:00
Graydon Hoare
d3eb3b42aa Minimize calls to hash function in map.rs 2011-04-22 01:06:20 -07:00
Patrick Walton
117aff8688 rustc: Intern types 2011-04-21 19:31:13 -07:00
Graydon Hoare
3b047bad6e New minimal test for current stage2 blocker. 2011-04-22 02:07:41 +00:00
Brian Anderson
540344acb9 Fix the signature of expr_ext
The extension body is just a string, not an expression.
2011-04-21 20:42:26 -04:00
Patrick Walton
c78b73b71d test: Un-XFAIL drop-parametric-closure-with-bound-box.rs, oops. 2011-04-21 17:36:10 -07:00
Patrick Walton
11c359962e test: XFAIL lib-box on stage0. Upstream LLVM doesn't have the library reading patch yet. 2011-04-21 17:35:25 -07:00
Patrick Walton
5e7336ec0d rustc: Add a shallow type equality function, not used yet 2011-04-21 17:06:01 -07:00
Patrick Walton
735435bf96 stdlib: Add a pointer equality function to the standard library and a test case 2011-04-21 16:44:17 -07:00
Patrick Walton
5dbf554bb3 rustc: Pass a type store around, which does nothing yet 2011-04-21 14:30:27 -07:00
Patrick Walton
3dbfc9310a rustc: Make the parser never assign any types, not even ty_nil 2011-04-21 13:00:06 -07:00
Patrick Walton
4d5fad696a rustc: Get rid of boring_ann(); it duplicates plain_ann() 2011-04-21 12:51:46 -07:00
Patrick Walton
ef0fcdd630 rustc: Create a unification context 2011-04-21 12:10:53 -07:00
Patrick Walton
f4b89f5d79 rustc: Move ty.unify to a separate namespace 2011-04-21 11:46:31 -07:00
Graydon Hoare
4509e6fd70 Change ty.eq_ty to avoid stringification. 2011-04-21 05:31:00 +00:00
Patrick Walton
1ee96891a0 rustc: Create an item collection context during typechecking; move collection to a module 2011-04-20 17:59:33 -07:00
Graydon Hoare
c0d98cec45 Fix walk bug that coupled with marijns work to regress stage1. 2011-04-20 22:52:33 +00:00
Patrick Walton
bc50a3ba44 rustc: Add a type unification cache 2011-04-20 15:26:55 -07:00
Patrick Walton
7596fcfba7 rustc: Define type hashing inductively 2011-04-20 14:34:17 -07:00
Patrick Walton
276a0f2de8 rustc: Precompute type hashes 2011-04-20 12:22:28 -07:00
Patrick Walton
cac7524c1a rustc: Remove all manual type construction outside ty.rs 2011-04-20 11:59:10 -07:00
Patrick Walton
38e842244c rustc: Remove all uses of plain_ty() and friends from outside of ty.rs 2011-04-20 11:23:36 -07:00
Patrick Walton
ac62488bb1 rustc: Introduce preferred type constructors, which will eventually precompute hashes and intern 2011-04-20 10:51:41 -07:00
Marijn Haverbeke
c49735d7c4 Remove last uses of fold from trans.rs 2011-04-20 17:43:37 +02:00
Marijn Haverbeke
757f1520d7 Change trans.collect_items to use walk, not fold 2011-04-20 17:23:45 +02:00
Marijn Haverbeke
4fe339d5ef Change collect_upvars from using fold to using walk 2011-04-20 12:35:34 +02:00
Marijn Haverbeke
fc6fbc1ed0 Integrate walk.rs 2011-04-20 12:35:07 +02:00
Graydon Hoare
9034a8fbd6 Fix #335, log context needs to be a scope to capture cleanups. 2011-04-20 04:55:55 +00:00
Graydon Hoare
2e6711fca5 Small fast-path hack to ty.hash_ty and eq_ty. 2011-04-19 18:46:54 -07:00
Patrick Walton
1080ac5349 rustc: Add a -noverify option 2011-04-19 18:31:27 -07:00
Graydon Hoare
d1b9ddc8d4 Add testcase for bootstrap blocker and fix for each result type to nil. 2011-04-19 16:53:12 -07:00
Patrick Walton
6651826677 rustc: Cache the results of type_of() 2011-04-19 16:41:08 -07:00
Patrick Walton
5475c0009c rustc: Use marijnh's stringifier for type hash and equality, since it's not sensitive to cnames 2011-04-19 16:41:08 -07:00
Graydon Hoare
928b25c9fb Un-XFAIL a few recently passing tests. 2011-04-19 15:41:45 -07:00
Patrick Walton
0ee997cee6 rustc: Make structured comparison glue instead of emitting it inline 2011-04-19 15:29:27 -07:00
Tim Chevalier
b7dd75c904 Handle nested items correctly in typestate_check
Summary says it all. Actually, only nested objects and functions
are handled, but that's better than before. The fold that I was using
before to traverse a crate wasn't working correctly, because annotations
have to reflect the number of local variables of the nearest enclosing
function (in turn, because annotations are represented as bit vectors).
The fold was traversing the AST in the wrong order, first filling in
the annotations correctly, but then re-traversing them with the bit
vector length for any outer nested functions, and so on.

Remedying this required writing a lot of tedious boilerplate code
because I scrapped the idea of using a fold altogether.

I also made typestate_check handle unary, field, alt, and fail.

Also, some miscellaneous changes:
* added annotations to blocks in typeck
* fix pprust so it can handle spawn
* added more logging functions in util.common
* fixed _vec.or
* added maybe and from_maybe in option
* removed fold_block field from ast_fold, since it was never used
2011-04-19 14:56:28 -07:00
Graydon Hoare
3d9cf15d0b Remove half-baked 'opacity' layer qualifier. 2011-04-19 14:00:04 -07:00
Graydon Hoare
d2bd07dcb0 Remove effect system from src. 2011-04-19 13:35:49 -07:00
Patrick Walton
d9d5eb82a7 rustc: Allow glue to be emitted even for scalar types; this is necessary to support compare glue 2011-04-19 11:25:40 -07:00
Patrick Walton
6599b310f7 rustc: Don't return "result" types from glue helper functions. This allows glue to fail. 2011-04-19 11:17:01 -07:00
Patrick Walton
37b5e91544 rustc: Assert that each basic block isn't terminated before adding instructions to it 2011-04-19 10:40:38 -07:00
Marijn Haverbeke
9287641c86 add rustboot-specific log upcalls to .def file 2011-04-19 18:12:49 +02:00
Marijn Haverbeke
880be6a940 Overhaul logging system in runtime
See https://github.com/graydon/rust/wiki/Logging-vision

The runtime logging categories are now treated in the same way as
modules in compiled code. Each domain now has a log_lvl that can be
used to restrict the logging from that domain (will be used to allow
logging to be restricted to a single domain).

Features dropped (can be brought back to life if there is interest):
  - Logger indentation
  - Multiple categories per log statement
  - I possibly broke some of the color code -- it confuses me
2011-04-19 16:57:13 +02:00
Marijn Haverbeke
6511d471ba replace error logging with log_err in stdlib and rustc 2011-04-19 16:57:13 +02:00
Marijn Haverbeke
6d3a423094 add log_err to rustc 2011-04-19 16:57:13 +02:00
Marijn Haverbeke
9bfc8bf11e Add log_err to rustboot 2011-04-19 16:57:13 +02:00
Brian Anderson
7f90000ab6 Precision overrides 0-padding in #fmt 2011-04-18 22:53:26 -04:00
Brian Anderson
59d5267936 Rearrange ExtFmt.RT.pad to recover some horizontal space 2011-04-18 21:36:04 -04:00
Brian Anderson
869b28e393 Left-justification overrides 0-padding in #fmt 2011-04-18 21:36:04 -04:00
Brian Anderson
d4f1a48111 Support 0 flag in #fmt 2011-04-18 21:36:04 -04:00
Graydon Hoare
4763cd39ca Boilerplate city, for anyone who wants it. 2011-04-18 18:32:05 -07:00
Patrick Walton
5f2cfa7351 rustc: Add an operation field to compare glue with ==, <=, and < modes 2011-04-18 12:57:00 -07:00
Rafael Ávila de Espíndola
9657e5d2d3 Revert 9ab42038bb while I find what is
wrong on Windows.
2011-04-18 15:37:04 -04:00
Graydon Hoare
8a6590a75f Remove use of 'use' from type-params-in-for-each.rs, put out darwin fire. 2011-04-18 12:20:50 -07:00
Rafael Ávila de Espíndola
9ab42038bb Change the makefiles to use -c. 2011-04-18 15:00:17 -04:00
Patrick Walton
abd78f2f04 rustc: Create stub glue for structural comparison 2011-04-18 11:14:38 -07:00
Marijn Haverbeke
ef62fae9db Add a proper check for rustboot
Uncomment log initialization.
2011-04-18 19:59:49 +02:00
Marijn Haverbeke
c40cf96656 Temporarily turn off logging initialization
Will be restored as soon as I find a way for the runtime
to figure out whether it is on rustboot or rustc.
2011-04-18 18:29:20 +02:00
Marijn Haverbeke
f6be25a870 Update foregoing patches to leave rust_crate alone.
Apparently it can't live in the main binary, since on non-Linux
platforms, dynamics libs won't find symbols in the binary. This
removes the crate_map pointer from rust_crate again, and instead
passes it as an extra argument to rust_start. Rustboot doesn't pass
this argument, but supposedly that's okay as long as we don't actually
use it on that platform.
2011-04-18 16:21:49 +02:00
Rafael Ávila de Espíndola
f12998e5d7 Add a -c option. 2011-04-18 10:02:52 -04:00
Marijn Haverbeke
148e6f7b00 Make log the log level configurable per module
This overloads the meaning of RUST_LOG to also allow
'module.submodule' or 'module.somethingelse=2' forms. The first turn
on all logging for a module (loglevel 3), the second sets its loglevel
to 2. Log levels are:

 0: Show only errors
 1: Errors and warnings
 2: Errors, warnings, and notes
 3: Everything, including debug logging

Right now, since we only have one 'log' operation, everything happens
at level 1 (warning), so the only meaningful thing that can be done
with the new RUST_LOG support is disable logging (=0) for some
modules.

TODOS:
 * Language support for logging at a specific level
 * Also add a log level field to tasks, query the current task as well
   as the current module before logging (log if one of them allows it)
 * Revise the C logging API to conform to this set-up (globals for
   per-module log level, query the task level before logging, stop
   using a global mask)

Implementation notes:

Crates now contain two extra data structures. A 'module map' that
contains names and pointers to the module-log-level globals for each
module in the crate that logs, and a 'crate map' that points at the
crate's module map, as well as at the crate maps of all external
crates it depends on. These are walked by the runtime (in
rust_crate.cpp) to set the currect log levels based on RUST_LOG.

These module log globals are allocated as-needed whenever a log
expression is encountered, and their location is hard-coded into the
logging code, which compares the current level to the log statement's
level, and skips over all logging code when it is lower.
2011-04-18 15:28:47 +02:00
Marijn Haverbeke
0bf75a203e collect crate meta info and ext crate names 2011-04-18 15:28:47 +02:00
Marijn Haverbeke
0984d1db2e move rust_crate structure into the actual crate code 2011-04-18 15:28:47 +02:00
Marijn Haverbeke
36c332a241 introduce local_ctxt in trans.rs to keep crate_ctxt global
This reduces crate_ctxt copying (which unfortunately did not
result in a noticeable speedup), and makes the role of that
type a bit more clear.
2011-04-18 15:28:47 +02:00
Brian Anderson
9976bb93d6 Support the space flag in #fmt 2011-04-17 19:50:58 -04:00
Brian Anderson
86a43c24d6 Support + flag in #fmt 2011-04-17 18:19:26 -04:00
Brian Anderson
1bec738c56 Support #fmt precision for bools, with same rules as strings
Not totally confident this is desirable. The alternative would be to make it a
compile error.
2011-04-17 17:24:17 -04:00
Brian Anderson
da996d6e6b Fix indentation in syntax-extension-fmt.rs 2011-04-17 17:12:20 -04:00
Brian Anderson
685e820465 Treat char #fmt conversions just like str conversions
Add missing tests
2011-04-17 17:06:55 -04:00
Brian Anderson
8f6603f58e Support #fmt precision for signed types 2011-04-17 16:51:17 -04:00
Brian Anderson
4c0aea69da Support #fmt precision for unsigned types 2011-04-17 16:18:25 -04:00
Brian Anderson
c7edcb3a72 Support #fmt precision for string types 2011-04-17 13:10:02 -04:00
Brian Anderson
96e3e29e88 Support left-justification in #fmt conversions 2011-04-16 19:43:29 -04:00
Brian Anderson
f7b68e9edd Add another test for #fmt conversion widths 2011-04-16 18:22:14 -04:00
Brian Anderson
dcfdb02fab Make #fmt support explicit conversion widths 2011-04-16 18:01:17 -04:00
Brian Anderson
07e820089f More tests for #fmt 2011-04-16 18:01:17 -04:00
Patrick Walton
0c288720b6 rustc: Capture type parameters into for-each blocks. Add a test case. 2011-04-15 18:14:29 -07:00
Patrick Walton
e37d9fc2b6 rustc: Use a regular vector instead of a hash table for type descriptors 2011-04-15 17:46:16 -07:00
Patrick Walton
3e922e2ecf stdlib: Add some vector functions: empty, empty_mut, grow_set, and freeze. Change _vec.grow to use uint arguments. 2011-04-15 17:46:16 -07:00
Rafael Ávila de Espíndola
099e094765 Produce PIC code and use -S in the Makefile. 2011-04-15 19:29:13 -04:00
Patrick Walton
cc6a9c8876 rustc: Remove the "boxed" check, and make the static_size_of_tag recursion-eliminating transformation deep 2011-04-15 15:16:06 -07:00
Rafael Ávila de Espíndola
2214b6835d Add a -S option for producing assembly. I will move more of it to
rust once the necessary APIs are available in C.
2011-04-15 17:41:14 -04:00
Patrick Walton
790084ced1 rustc: Make fold_ty no longer use an object; introduce walk_ty 2011-04-15 13:01:31 -07:00
Graydon Hoare
232c450957 Work on destructors, not entirely functional yet (no tydesc integration). 2011-04-14 16:50:59 -07:00
Patrick Walton
0387b5a060 rustc: Use the unified result for the type of assignment expressions 2011-04-14 15:28:50 -07:00
Patrick Walton
55ab187c9c rustc: Add a test case for previous commit 2011-04-14 12:51:27 -07:00
Patrick Walton
35e021ed53 rustc: Perform type substitutions when recording locals 2011-04-14 12:33:26 -07:00
Patrick Walton
fee88f79f5 rt: Remove half-baked, incomplete, commented-out print_stack_trace() stub 2011-04-14 11:35:22 -07:00
Patrick Walton
65b7578851 rustc: Remove generalize_ty. Instead, maintain an explicit type parameter substitution list. 2011-04-14 11:24:25 -07:00
Patrick Walton
ec5a60d5e2 rustc: Use union-find for variable substitution 2011-04-14 11:24:25 -07:00
Brian Anderson
99a697b56a Add support for upper-case hex and binary output to #fmt.
Only works for uints at present. Necessitated the addition of _str.to_upper.
2011-04-13 22:14:54 -04:00
Brian Anderson
5c0f4c1939 Add more commentary about ExtFmt 2011-04-13 22:14:40 -04:00
Brian Anderson
4844e1c08a Add support for printing uints as lower-case hex to ExtFmt.
Begin passing an ExtFmt.RT.conv parsed format description to each of the
ExtFmt.RT.conv* functions.
2011-04-13 22:14:24 -04:00
Brian Anderson
aebdef0cd6 Move #fmt conversion model into ExtFmt.CT namespace 2011-04-13 22:13:21 -04:00
Brian Anderson
44aed626bf Add ExtFmt test for unsigned type 2011-04-13 22:13:04 -04:00
Brian Anderson
330fdd2b04 Fix a typo in test expr-alt-generic-box1.rs 2011-04-13 21:46:20 -04:00
Tim Chevalier
de50efebc2 rm unused import 2011-04-13 15:50:34 -07:00
Tim Chevalier
7c6e6fc5d4 Make expr_while work in typestate_check
Also did some refactoring in typestate_check. All test cases in
compile-fail that involve uninitialized vars now fail correctly!
(All eight of them, that is.)
2011-04-13 15:50:34 -07:00
Graydon Hoare
eb33a5307b Remove gc() call from end of lib-map.rs, works on stage0 otherwise (stage0 produces no gc info) 2011-04-13 15:47:05 -07:00
Graydon Hoare
afeb3a417c Fix temporary-spilling logic in trans_args, uncomment most of lib-deque.rs (which now passes on stage0). 2011-04-13 15:21:54 -07:00
Graydon Hoare
0910a7323c Add generic-temporary.rs minimal test showing cause of lib-deque.rs failure on stage0. 2011-04-13 13:21:06 -07:00
Graydon Hoare
2c65e10a9f Fix lib-deque.rs to pass typarams by alias. 2011-04-13 12:29:34 -07:00
Graydon Hoare
80a4b1ba53 Slight updates to match API drift in io, lib-io.rs passes. 2011-04-13 12:05:15 -07:00
Rafael Ávila de Espíndola
01b1d4110d Remove code that is already in llvm for some time. 2011-04-13 14:55:44 -04:00
Graydon Hoare
8e0ecb4d1a Lex numeric escapes, needed for lib-str.rs (which now passes). 2011-04-13 11:25:11 -07:00
Rafael Ávila de Espíndola
3e081d20e5 Typo. 2011-04-13 14:11:28 -04:00
Rafael Ávila de Espíndola
e7b8db2e63 Enable alias analysis and the function attributes pass.
The C API extension is already upstream, we can drop the local copy once
the bots are updated.
2011-04-13 13:54:08 -04:00
Tim Chevalier
63e87c102d typestate_check can now handle expr_block, expr_if, and expr_binary
(caveat for the latter: it assumes that binary operations are strict;
a TODO is to detect or and and and correctly reflect that they're lazy
in the second argument). I had to add an ann field to ast.block,
resulting in the usual boilerplate changes.

Test cases that currently work (if you uncomment the typestate pass
in the driver) (all these are under test/compile-fail):

fru-typestate
ret-uninit
use-uninit
use-uninit-2
use-uninit-3
2011-04-12 19:03:52 -07:00
Patrick Walton
de0175abed rustc: Switch to indices for type parameters 2011-04-12 15:10:40 -07:00
Patrick Walton
e11e8754de rustc: Add "float" as a type to the pretty printer 2011-04-12 15:10:39 -07:00
Tim Chevalier
d7e8818414 Further work on typestate. Handles expr_rec and expr_assign now.
Also changed the ts_ann field on statements to be an ann instead,
which explains most of the changes.

As well, got rid of the "warning: no type for expression" error
by filling in annotations for local decls in typeck (not sure whether
this was my fault or not).

Finally, in bitv, added a clone() function to copy a bit vector,
and fixed is_true, is_false, and to_str to not be nonsense.
2011-04-12 14:31:46 -07:00
Rafael Ávila de Espíndola
87d17c3a2c Add LLVMAddLoopIdiomPass. 2011-04-12 16:13:31 -04:00
Rafael Ávila de Espíndola
424d3e3837 Add LLVMAddCorrelatedValuePropagationPass. 2011-04-12 16:08:13 -04:00
Rafael Ávila de Espíndola
8e5109d4ed Add LLVMAddScalarReplAggregatesPassSSA. 2011-04-12 15:59:38 -04:00
Graydon Hoare
5f6abdc0e8 Un-XFAIL generic-tag-corruption.rs. 2011-04-12 12:58:43 -07:00
Graydon Hoare
7c55938125 Make glue always pass-by-alias and rename "scalar_or_boxed" concept to "immediate" 2011-04-12 12:48:46 -07:00
Graydon Hoare
f374fa44b6 Tighten up condition on use of opaque_tag, remove blunt hammer of alias arg-casting in trans_args. 2011-04-12 12:48:46 -07:00
Rafael Ávila de Espíndola
832ad0e041 Add LLVMAddEarlyCSEPass to the .def file. 2011-04-12 15:48:11 -04:00
Rafael Ávila de Espíndola
dd6fc607a4 Enable more optimizations. 2011-04-12 15:33:39 -04:00
Brian Anderson
73eecbd0ca Factor out creation of calls into ExtFmt.RT 2011-04-11 21:55:03 -04:00
Brian Anderson
bba245f3e6 Add support for bool, char to extfmt.
XFAIL syntax-extension-fmt in rustboot.
2011-04-11 21:54:03 -04:00
Brian Anderson
37f87161cc Move ExtFmt compile-time functions into their own module 2011-04-11 21:51:23 -04:00
Brian Anderson
c41796f2ca Use correct indentation for ExtFmt.rs 2011-04-11 21:51:23 -04:00
Brian Anderson
ce85b9eb7b Make ExtFmt call its own functions instead of others defined in std 2011-04-11 21:51:23 -04:00
Brian Anderson
d4d0144bcf Move extfmt parsing into standard library 2011-04-11 21:51:23 -04:00
Brian Anderson
5a36786634 Move the extfmt data model into the standard library. 2011-04-11 21:51:23 -04:00
Patrick Walton
9d9790c7f5 rustc: Add a uint hash function 2011-04-11 16:54:05 -07:00
Patrick Walton
e0faf57313 rustc: Factor out expr_ty() into expr_ann() and expr_ty() 2011-04-11 15:05:39 -07:00
Graydon Hoare
d218df02bf Add new minimal testcase showing generic tag memory corruption. 2011-04-11 15:00:18 -07:00
Rafael Ávila de Espíndola
fcb344799a Add a hack to force the linker to fetch Object.o 2011-04-11 15:49:45 -04:00
Rafael Ávila de Espíndola
cca6335c26 Implement the "attempted dynamic environment-capture" error in rustc. 2011-04-11 15:35:01 -04:00
Brian Anderson
1f04c3dcef Un-XFAIL expr-block-fn.rs
It mysteriously works now.
2011-04-10 16:25:09 -04:00
Patrick Walton
3efb7f5459 rustc: Push down types for all expressions; add logic for recv and send 2011-04-08 18:14:31 -07:00
Graydon Hoare
35573144c5 Remove silly legacy glue-offset encoding, predicate runtime adjustments by ABI. LLVM should inline most glue now. 2011-04-09 00:54:46 +00:00
Marijn Haverbeke
c0d0b717ee Fix codemap.lookup_pos
Previously, it would place every single location in the first
file of the crate that was parsed.
2011-04-09 01:57:48 +02:00
Patrick Walton
129c8392af rustc: Rename "demand" to "pushdown" in the typechecker and explain more clearly what it's for 2011-04-08 16:22:03 -07:00
Marijn Haverbeke
1af3174fe3 Move to single-uint file-position representation.
This makes passing them around cheaper. There is now a table (see
front/codemap.rs) that is needed to transform such an uint into an
actual filename/line/col location.

Also cleans up the span building in the parser a bit.
2011-04-09 01:05:18 +02:00
Marijn Haverbeke
094d31f5e4 Make lexer buffer the whole file
This way, it won't have to go through a bunch of calls for each
byte fetched.
2011-04-09 01:05:18 +02:00
Patrick Walton
573bc5ad01 rustc: Resolve ty_locals 2011-04-08 15:41:08 -07:00
Patrick Walton
5355811859 rustc: Add the ability to fold over annotations 2011-04-08 15:21:49 -07:00
Rafael Ávila de Espíndola
ad7aff8203 Remove unused function. 2011-04-08 16:03:35 -04:00
Rafael Ávila de Espíndola
70bc63a3af Remove unused function. 2011-04-08 15:14:26 -04:00
Tim Chevalier
97d0f76c63 fix long lines 2011-04-08 17:46:46 +00:00
Tim Chevalier
9c001af07c Implemented computing prestates and poststates for a few expression forms.
The typestate checker (if it's uncommented) now correctly rejects a
trivial example program that has an uninitialized variable.
2011-04-08 17:46:46 +00:00
Marijn Haverbeke
6109dba305 Disable effect checking in rustboot 2011-04-08 18:44:58 +02:00
Brian Anderson
b883ec4c9d Avoid some gotchas with logging macros
I think this is sufficient to eliminate multiple evaluation and the
possibility of accidental miscompilation from the logging macros.
2011-04-07 22:53:16 -04:00
Brian Anderson
0abccc6370 Add a test case for calling generic functions taking alias args with box types 2011-04-07 22:23:07 -04:00
Brian Anderson
a4f8de382a Add an XFAILed test for blocks that result in functions 2011-04-07 22:13:39 -04:00
Brian Anderson
d2d42fd4c7 Make block results work for generic types
I think just about every type can be used as a block result now. There's quite
a proliferation of tests here, but they all test slightly different things and
some are split out to remain XFAILed. The tests of generic vectors are still
XFAILed because generic aliased boxes still don't work in general.
2011-04-07 21:58:36 -04:00
Patrick Walton
afa6d85d61 stdlib: Add a simple union-find data structure 2011-04-07 18:02:01 -07:00
Patrick Walton
f28a9d8f52 rustc: Pointer cast when crossing a box boundary for statically-sized elements in trans_index() 2011-04-07 18:02:01 -07:00
Marijn Haverbeke
009e01dbe7 add FIXME related to the -fno-strict-aliasing workaround 2011-04-08 02:23:33 +02:00
Marijn Haverbeke
53cc673db1 Re-add a read_byte() method to buf_reader objs
This was removed because of the repetition, but doing single-byte
reads in terms of read_bytes (which allocates a vec) is needlessly
slow. This change speeds up parsing by 22%.

(Eventually, we won't be able to escape handling the buffering in the
stdlib itself.)
2011-04-08 02:23:14 +02:00
Marijn Haverbeke
bb56253015 Initialize two more variables to keep darwin tinderbox happy 2011-04-08 00:59:45 +02:00
Marijn Haverbeke
32e62d0151 add a -parse-only option to rustc
(undocumented, only used for profiling the parser)
2011-04-08 00:46:41 +02:00
Marijn Haverbeke
973023030e add -O2 when compiling rt, fix warnings triggered by optimizer 2011-04-08 00:41:52 +02:00
Lindsey Kuper
21b31a350a Updated test to use 'check' rather than just logging results. 2011-04-07 15:22:34 -07:00
Marijn Haverbeke
9a7576fe2c Move to macro-based logging checks in the C++ code
No functions should be called for log statements that turn out to be
inactive.
2011-04-07 15:15:30 -07:00
Patrick Walton
6dcf6218b1 rustc: Pointer cast when autodereferencing boxed tag types 2011-04-07 15:12:48 -07:00
Patrick Walton
9b35051143 rustc: Use the name "opaque_tag", not "tag", for opaque tags 2011-04-07 15:12:48 -07:00
Lindsey Kuper
1092bbfff0 Support for self-calls that take arguments.
Nicer parsing of self-calls (expr_self_method nodes inside expr_call
nodes, rather than a separate expr_call_self) makes typechecking
tractable.  We can now write self-calls that take arguments and return
values (see: test/run-pass/obj-self-*.rs).
2011-04-07 14:26:34 -07:00
Marijn Haverbeke
39774e88b4 Add a very basic crate-dump utility
'rustc -ls [cratelib]' will now dump out a list of symbols defined by
the crate, as well as a short description of what they are.
2011-04-07 14:19:19 -07:00
Marijn Haverbeke
d678dad434 Fix problem in metadata writer
It was creating non-multiple-of-four section sizes, which, for some
reason, presumably by LLVM, were clipped, rather than padded, to be a
multiple of four.
2011-04-07 14:19:17 -07:00
Marijn Haverbeke
ac3026412b Revise EBML reader API
New one is less stateful, easier to work with.
2011-04-07 14:19:16 -07:00
Patrick Walton
0f5f467dc0 rustc: Remove useless call to type_of() in trans_rec() 2011-04-07 13:55:02 -07:00
Patrick Walton
08bf4d1f19 "xfail-stage0", not "XFAIL-stage0" 2011-04-07 13:53:11 -07:00
Patrick Walton
3236e6008c XFAIL lib-option.rs in stage0 due to crash on Darwin on tinderbox 2011-04-07 13:44:20 -07:00
Patrick Walton
a97a200413 Fix effect on deref-lval 2011-04-07 13:30:50 -07:00
Patrick Walton
015c0d0d59 rustc: Allow dereference expressions to be used as lvalues. Add a test case. 2011-04-07 12:51:27 -07:00
Rafael Ávila de Espíndola
b4422cca21 Add a -O option and change the Makefile to use it. 2011-04-07 15:42:06 -04:00
Patrick Walton
ddf96ac3a8 rustc: Reindent line. Puts out burning tinderbox. 2011-04-07 12:01:48 -07:00
Patrick Walton
cd6962f29d rustc: Link to external tag discriminants. Un-XFAIL test/run-pass/lib-option.rs. 2011-04-07 11:42:40 -07:00
Patrick Walton
2a894cabc2 Merge branch 'master' of github.com:graydon/rust 2011-04-07 10:14:25 -07:00
Rafael Ávila de Espíndola
25320da099 Run optimizations.
It is always on for now just to make sure the bots are happy. If they
are, I will add a -O option and update the makefile.
2011-04-07 12:12:21 -04:00
Tim Chevalier
2e90bd94de Continued sketching out code for checking states against preconditions.
It's still sketchy. I added a typestate annotation field to statements
tagged stmt_decl or stmt_expr, because a stmt_decl statement has a typestate
that's different from that of its child node. This necessitated trivial
changes to a bunch of other files all over to the compiler. I also added a
few small standard library functions, some of which I didn't actually end
up using but which I thought might be useful anyway.
2011-04-06 17:58:18 -07:00
Patrick Walton
d9da43984b Merge branch 'master' of github.com:graydon/rust 2011-04-06 10:25:32 -07:00
Graydon Hoare
36d75d6391 Minimal testcase for next bootstrap blocker. 2011-04-06 08:33:24 -07:00
Graydon Hoare
5e98cd9472 Remove reference to nonexistent ast.module from typestate_check.rs, stage1 doesn't like it. 2011-04-06 04:18:12 +00:00
Graydon Hoare
52abd912c0 Brute force and ignorance workaround for tag-and-generic-obj; un-XFAIL it. 2011-04-05 21:08:13 -07:00
Graydon Hoare
8382990627 Add new minimal test for current blocker on bootstrapping. 2011-04-05 17:27:55 -07:00
Tim Chevalier
86d4601827 More work on typestate. Sketched out code for computing and checking prestates and poststates. Still a long ways away. 2011-04-06 00:17:06 +00:00
Lindsey Kuper
4fc8de1969 Last pieces of self-call support.
The last few pieces of the hack that lets us use trans.trans_call() to
translate self-calls, plus a fix for the parser buy that was
preventing self-call expressions from getting past parsing.
test/run-pass/obj-self.rs works now (as in it actually prints "hi!"
twice!).
2011-04-05 16:26:31 -07:00
Lindsey Kuper
b8bb2e118e Further on the path toward self-awareness.
Mostly:

  * Merciless refactoring of trans.rs so that trans_call can work for
    self-calls as well as other kinds of calls

Also:

  * Various changes to go with having idents, rather than exprs, in
    expr_call_self AST nodes
  * Added missing case for SELF token to token.to_str()
2011-04-05 14:54:48 -07:00
Graydon Hoare
8703c8067f FIx native wrapper generation to handle more arg types. 2011-04-05 21:52:48 +00:00
Lindsey Kuper
361ee5a68b Oops -- if we're going to use the pretty-printer, we need it to work. 2011-04-05 11:55:14 -07:00
Lindsey Kuper
ba537fa5f5 Knocking out a quick fixme: pretty-printing exprs in error messages. 2011-04-05 11:55:12 -07:00
Graydon Hoare
70e5457d7c Make box prefix operator and box type carry mutability flag. 2011-04-04 15:44:15 -07:00
Patrick Walton
f10a5bbad0 rustc: Make type_of() return the type of the wrapper for native functions. lib-map now compiles, but fails to work properly. 2011-04-03 15:23:58 -07:00
Brian Anderson
bd9f45446a Begin comparing vectors from the correct address
Start at the first element instead of the address of the vector.
2011-04-03 03:09:20 -04:00
Graydon Hoare
8e9c5b96fb Change rust_vec to have a 16-byte header, to 16-byte-align vec-body data. Major perf win. 2011-04-02 19:05:12 -07:00
Brian Anderson
1326d424c9 Add more tests for alt expressions 2011-04-02 20:35:51 -04:00
Brian Anderson
99901bdbc4 Add FIXMEs around type handling in trans_if, trans_alt 2011-04-02 20:35:51 -04:00
Brian Anderson
21fb49ad95 Join the results of alt arms so alt can be used as an expression.
Un-XFAIL expr-alt.rs.
2011-04-02 20:35:50 -04:00
Brian Anderson
203e33b611 Make join_results branch into the join block even when only one edge is live.
I don't don't totally understand the implications of this but it makes the
behavior consistent for all live edges, which is going to make joining the
arms of an alt expression work correctly.
2011-04-02 20:35:50 -04:00
Brian Anderson
6e6acaa39a Fail on non-exhaustive alt matches 2011-04-02 20:35:50 -04:00
Brian Anderson
9d0a505d61 Terminate fail blocks by making their ends unreachable.
This will make implementing default alt arms simpler.
2011-04-02 20:35:50 -04:00
Graydon Hoare
4f90c88b4d Write typarams for variants. Typecheck gets as far as ty.rs now. 2011-04-01 18:53:08 -07:00
Graydon Hoare
5b7961b641 Encode ty_native ebml node for native types so typechecker has something to work with. 2011-04-01 18:34:13 -07:00
Graydon Hoare
c077da553d Remove typestate_check reference to nonexistent ast.init node; rustc compiling itself notices what rustboot did not :) 2011-04-01 18:33:47 -07:00
Graydon Hoare
23f18a096f Re-enable typestate_check in build, was lost during merge. Sorry. 2011-04-01 17:23:56 -07:00
Graydon Hoare
0397c05f42 Support for passing native types through metadata/creader. 2011-04-01 17:04:51 -07:00
Graydon Hoare
2a2ea6351d Comment out import for not-yet-compiling typestate_check. 2011-04-01 17:04:07 -07:00
Graydon Hoare
3971110d7f Guh. Actually commit the staged undo-of-indentation. Forgotten git staging wins again. 2011-04-01 16:04:22 -07:00
Graydon Hoare
7d88e63ec8 Switch private linkage to local, re-indent trans.rs. 2011-04-01 15:01:46 -07:00
Patrick Walton
3a8b0be1cb rustc: Write symbols for native items into the crate metadata 2011-04-01 14:18:46 -07:00
Patrick Walton
a0eb9c814b rustc: Don't try to write symbols into the metadata for nullary tags. Puts out burning tinderbox. 2011-04-01 14:14:10 -07:00
Patrick Walton
6dc452335a rustc: Get tag variants from the crate metadata 2011-04-01 13:02:44 -07:00
Patrick Walton
ec9d7abf8c rustc: Have tag_variants() return a new variant_info structure instead of an AST node 2011-04-01 11:37:31 -07:00
Tim Chevalier
3130348ee1 Started adding support for typestate checking.
I added a new field to the ast "ann" type for typestate information.
Currently, the field contains a record of a precondition bit vector and
postcondition vector, but I tried to structure things so as to make
it easy to change the representation of the typestate annotation type.
I also had to add annotations to some syntactic forms that didn't have
them before (fail, ret, be...), with all the boilerplate changes
that that would imply.

The main call to the typestate_check entry point is commented out and
the actual pre-postcondition algorithm only has a few cases
implemented, though the overall AST traversal is there. The rest of
the typestate algorithm isn't implemented yet.
2011-04-01 11:27:32 -07:00
Patrick Walton
69a34b992b rustc: Remove useless call to tag_variant_with_id() 2011-04-01 10:59:59 -07:00
Brian Anderson
1bc06bc59b Cleanup typos and newlines 2011-04-01 00:05:13 -04:00
Brian Anderson
efb738153c Add an XFAILed test for treating alts as expressions 2011-03-31 23:23:27 -04:00
Brian Anderson
dcf04ffbad Un-XFAIL expr-if-box.rs 2011-03-31 23:15:11 -04:00
Brian Anderson
f16e7242d2 Initialize the alloca used to retrieve boxed block results to null.
This allows blocks to be used in conditional constructs where the block may
not ever execute: the drop glue will notice that it was never used and ignore
it.

Also, beef up the comments.
2011-03-31 23:15:11 -04:00
Brian Anderson
524e803582 Only use allocas to hold expression results for boxed types 2011-03-31 23:15:11 -04:00
Brian Anderson
f05d3c516b Add more comments to trans_block 2011-03-31 23:15:11 -04:00
Brian Anderson
cf16f4f7e5 Add a test for block expressions of generic types. XFAILed 2011-03-31 23:15:11 -04:00
Brian Anderson
c27b72e323 Add another test for blocks as expressions 2011-03-31 23:15:11 -04:00
Brian Anderson
19a949c15e Un-XFAIL expr-block-box.rs 2011-03-31 23:15:11 -04:00
Brian Anderson
125bebbf60 Modify trans.rs to allow blocks to result in boxed values 2011-03-31 23:15:11 -04:00
Brian Anderson
bd1c61548e Move str test from expr-if.rs to expr-if-box.rs in preperation for breaking that code path. 2011-03-31 23:15:11 -04:00
Brian Anderson
d631f29d47 Add block_to_str and expr_to_str methods to the pprust module.
Since pprust is authed impure these can be used for debug logging.
2011-03-31 23:15:11 -04:00
Brian Anderson
2490cd3275 Add a test for block expressions that have results. XFAILed. 2011-03-31 23:15:11 -04:00
Patrick Walton
c66edca83d rustc: Add a type annotation to tag items 2011-03-31 19:12:40 -07:00
Patrick Walton
1eeedbd008 rustc: Make tag_ty_params() and substitute_ty_params() take def ids instead of ty_params, and to check in external crates 2011-03-31 18:45:24 -07:00
Patrick Walton
bdea343879 rustc: Use the path index. Speeds up compilation a lot. 2011-03-31 18:28:59 -07:00
Patrick Walton
fffc5d3b3d rustc: Write out a path index as well 2011-03-31 18:28:59 -07:00
Graydon Hoare
1b65a61cad Couple minor bug fixes in creader, lib-bitv, int, rand, sort, sha1, uint and vec all work. 2011-03-31 15:57:36 -07:00
Patrick Walton
3c1de96cda rustc: Use the crate index to look up defs 2011-03-31 14:37:44 -07:00
Lindsey Kuper
ef0c903f6a More stuff to go with the new expr_call_self AST node 2011-03-31 14:16:02 -07:00
Lindsey Kuper
e939d6f17c More machinery for adding an expr_call_self AST node. 2011-03-31 14:04:53 -07:00
Patrick Walton
6c383bbd7b rustc: Index only the local part of definition IDs 2011-03-31 12:24:59 -07:00
Patrick Walton
3945ace520 rustc: Write out an index of definition info in crate metadata 2011-03-31 11:56:02 -07:00
Patrick Walton
6a60cb1e0c rustc: Mix the bits more when hashing def ids 2011-03-31 11:55:28 -07:00
Patrick Walton
dec92d392e stdlib: Add a write_be_uint() function to writers 2011-03-31 11:54:52 -07:00
Patrick Walton
7f3f66df7b rustc: Use the scaled index, not the raw index, if a vector has generic size. lib-vec.rs works now. 2011-03-31 10:10:21 -07:00
Brian Anderson
607fa14960 Rename incr_all_refcnts to take_ty, to match drop_ty 2011-03-31 14:52:30 +00:00
Brian Anderson
b0b72ab472 Restore scope block contexts to the translation of expr_block.
I removed this previously but that was wrong because it caused
block expressions to not create a new scope.
2011-03-31 14:52:29 +00:00
Brian Anderson
50e354611f Remove redundant parser logic.
These cases are all dealt with in parse_expr_inner.
2011-03-31 14:52:29 +00:00
Marijn Haverbeke
6a75740e96 handle unterminated block comments and line comment at eof 2011-03-31 14:41:40 +00:00
Marijn Haverbeke
39f0656b4f Improve line comment positioning
This involved making ast.variant spanned.
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
8a7ea941bb Support break and cont in pretty-printer 2011-03-31 14:41:40 +00:00
Marijn Haverbeke
f8393cc572 Add effect field to ast.ty_fn.
Still not used, except by the pretty-printer.
2011-03-31 14:41:40 +00:00
Marijn Haverbeke
e7e6f396d8 Preserve comments when pretty-printing.
The patch also includes a number of smaller fixes to the
pretty-printer that were encountered on the way.
2011-03-31 14:41:39 +00:00
Graydon Hoare
ffc188a4dd Tweak build command on rustc. 2011-03-31 14:41:35 +00:00
Patrick Walton
ab8d200fb0 rustc: Read 'y' tags from external crates 2011-03-30 18:28:33 -07:00
Patrick Walton
ae5ba62b24 rustc: Use the type cache to construct external item references 2011-03-30 18:15:29 -07:00
Patrick Walton
cc59cea8b0 rustc: Thread an item-to-type mapping throughout the typechecking and translation phases 2011-03-30 17:28:06 -07:00
Graydon Hoare
a154c5b656 Um, that'd be, align the word *before* retpc. Addresses point to the low part of a word. Un-XFAIL nbody on Darwin. 2011-03-30 14:10:06 -07:00
Graydon Hoare
3e7b991d49 Ensure task stacks start out with a 16-byte aligned entry frame. Should make OSX behave a bit better. 2011-03-30 13:04:18 -07:00
Graydon Hoare
b5a4336487 Re-XFAIL lib-int.rs and lib-uint.rs. 2011-03-29 23:10:28 -07:00
Graydon Hoare
61e5587eab Re-XFAIL lib-bitv.rs harder 2011-03-29 22:58:50 -07:00
Graydon Hoare
51807ad628 Re-XFAIL lib-bitv.rs 2011-03-29 22:08:35 -07:00
Patrick Walton
301cfe1354 rustc: Add all items to the item table during translation. lib-vec now compiles, but asserts and then segfaults. 2011-03-29 18:16:53 -07:00
Patrick Walton
b09e09c673 rustc: Un-XFAIL lib-uint.rs 2011-03-29 18:16:53 -07:00
Patrick Walton
601cf8c97f rustc: Un-XFAIL lib-int.rs. 2011-03-29 17:31:48 -07:00
Patrick Walton
626bdaaa1f rustc: Parse parameter IDs in external crate metadata. Un-XFAIL lib-bitv.rs. 2011-03-29 17:25:55 -07:00
Patrick Walton
c67eb1a575 rustc: Partially resolve external module imports 2011-03-29 17:01:27 -07:00
Patrick Walton
6a5feffd6c rustc: Tolerate def id tags inside module tags. Fixes metadata reading. 2011-03-29 16:43:27 -07:00
Lindsey Kuper
55fbed3d8d Beginnings of support for magical self prefix; nothing profound happening yet. 2011-03-29 15:59:15 -07:00
Graydon Hoare
f6490a6f03 Ignore 'mutable foo' in plain field contexts. 2011-03-29 15:40:21 -07:00
Patrick Walton
94c061729b rustc: Resolve external modules and native modules to definition IDs as well 2011-03-29 14:46:42 -07:00
Graydon Hoare
77f85460e6 Rename trans_native to trans_native_call, for clarity. 2011-03-29 13:23:51 -07:00
Graydon Hoare
734abe593d Teach trans to emit undefined references to 'use'd symbols. Can compile and run a simple 'use std;' example now. 2011-03-29 13:23:51 -07:00
Brian Anderson
8f2a97a562 Add partial support for if expressions resulting in generic types 2011-03-28 21:14:08 -07:00
Brian Anderson
38d5453584 Add an XFAILed test for if expressions resulting in boxes 2011-03-28 21:14:06 -07:00
Brian Anderson
aced4ce145 Handle structural types as the result of if expressions 2011-03-28 21:14:04 -07:00
Brian Anderson
a5a319fa04 Teach rustc to use the result of if expressions 2011-03-28 21:14:03 -07:00
Brian Anderson
2b27d12ce1 Add expr_spawn, spawn parsing, folding, typechecking, ty_task 2011-03-28 21:13:53 -07:00
Graydon Hoare
268b2140dc Add long-while.rs to check on frame growth. 2011-03-28 18:07:29 -07:00
Graydon Hoare
540d29f641 Move all allocas to dedicated basic block at top of function, to keep frames finite. Un-comment next size in nbody.rs. 2011-03-28 18:07:29 -07:00
Patrick Walton
2809e30d1d rustc: Parse types in external metadata 2011-03-28 16:49:26 -07:00
Patrick Walton
ace2c92a96 rustc: Populate the item types table with types of items from external crates; remove the redundant typeck.ty_and_params type on the way 2011-03-28 14:42:01 -07:00
Patrick Walton
621ab34410 rustc: Remove commented out "encode_tag_variant_info" call that sneaked in 2011-03-28 13:31:13 -07:00
Patrick Walton
62f4709953 rustc: Resolve def ids in external crates 2011-03-28 13:29:59 -07:00
Patrick Walton
cc221c472a rustc: Don't include a trailing null when writing out metadata; it corrupts the EBML 2011-03-28 13:15:03 -07:00
Graydon Hoare
8b5968165f Fix get_tydesc to alloca enough room for root; remove hack that was attempting to paper over it. Fix from espindola. 2011-03-28 11:11:03 -07:00
Patrick Walton
1cb3ce89dd shootout: Hoist out the movement too; switch square root to an LLVM intrinsic 2011-03-28 08:24:58 -07:00
Patrick Walton
81695a19f8 rustc: Add support for calling LLVM intrinsics as native functions 2011-03-28 08:24:58 -07:00
Marijn Haverbeke
6ecdc04788 Add support for break and cont to rustc
Testing proper cleanup is hampered by
https://github.com/graydon/rust/issues/293
2011-03-27 14:11:23 +02:00
Patrick Walton
9c5affda1a shootout: Hoist out the vector indexing on nbody; don't rely on LICM, which isn't working for some reason (insufficient alias info?) Speeds up nbody a bit. 2011-03-26 23:10:28 -07:00
Graydon Hoare
f59e49c9a6 Twiddle visibility, start exposing only type-mangled names (64 bit truncated sha1 prefixes). 2011-03-26 19:14:07 -07:00
Lindsey Kuper
2650487120 Got the nbody demo working, and hopefully faster, too! 2011-03-26 17:51:54 -07:00
Lindsey Kuper
1c1c67229a Updates to the nbody demo. 2011-03-26 17:51:42 -07:00
Graydon Hoare
dbc7289a4d Start refactoring name-mangling in trans. 2011-03-26 17:36:47 -07:00
Graydon Hoare
643a75b86e Add visibility enum values to lib.llvm. 2011-03-26 17:36:26 -07:00
Graydon Hoare
e99feabf47 Add a result_str method to std.sha1.sha1. 2011-03-26 17:36:08 -07:00
Graydon Hoare
ac6e1131e9 Teach creader and metadata writer how to do ty.ty_type. 2011-03-26 17:35:51 -07:00
Patrick Walton
bea41aa7d8 rustc: Add a function to look up external item info in the item info table 2011-03-25 19:02:19 -07:00
Graydon Hoare
027368b885 Janitorial: move llvmext back to llvm module, as they're the same thing now. 2011-03-25 18:45:00 -07:00
Graydon Hoare
fb08ef44b4 Tweak rustllvm bindings to work on linux, where bool != LLVMBool. 2011-03-25 18:45:00 -07:00
Patrick Walton
24a75eeccc rustc: Parse definition IDs from crates; add a function to parse unsigned ints to the standard library 2011-03-25 18:35:30 -07:00
Graydon Hoare
ee686dacb8 Add get_extern_const, factor get_extern into get_extern_fn and get_simple_extern_fn. 2011-03-25 17:59:56 -07:00
Patrick Walton
94c19a18ae rustc: Look up names in "use"d crates 2011-03-25 17:54:48 -07:00
Graydon Hoare
661f1c541e Trans nomenclature tidy-up: upcall vs. native vs. extern. 2011-03-25 15:48:00 -07:00
Graydon Hoare
b2427509e2 Another go at changing compile-command, this time using RBUILD env var. 2011-03-25 15:07:27 -07:00
Patrick Walton
864e2ab24e stdlib: Implement a memory buffer reader, untested at the moment 2011-03-25 15:01:21 -07:00
Graydon Hoare
3712ee68ad Sketch of wiring typeck up to creader. 2011-03-25 14:34:32 -07:00
Patrick Walton
739c4aedf1 stdlib: Separate basic I/O reading functionality into a separate buf_reader object, like writing 2011-03-25 14:06:18 -07:00
Graydon Hoare
91c2b82b09 Revert "Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root."
This reverts commit 846f2e2ba9.
2011-03-25 14:05:38 -07:00
Graydon Hoare
846f2e2ba9 Bulk-edit compile commands in emacs chatter to point to assumed build/ dir off src root. 2011-03-25 13:48:37 -07:00
Graydon Hoare
49d9d5688e Switch xfail system to use comments embedded in source files. 2011-03-25 12:19:20 -07:00
Tim Chevalier
a47cd50dfb Parse FP literals without coercing to int. This allows parsing 64-bit
floats. However, if someone writes a literal that can't be represented
precisely in 64 bits, the front-end will accept it while the back-end
will (presumably) complain.
2011-03-25 11:20:30 -07:00
Patrick Walton
e2d6475308 rustc: Store cached crate metadata in the session 2011-03-25 11:11:21 -07:00
Brian Anderson
9ca7acb1f3 Update pretty printer for ports, channels, send and receive 2011-03-25 11:01:52 -07:00
Brian Anderson
ebc4df3c7a Implement local declarations with receive. Un-XFAIL decl-with-recv.rs. 2011-03-25 11:01:52 -07:00
Brian Anderson
71f058499a Refactor ast.local to make room for initialization via recv 2011-03-25 11:01:52 -07:00
Brian Anderson
ef1bcdea70 Add test for local declarations with receive. XFAIL in rustc. 2011-03-25 11:01:52 -07:00
Patrick Walton
77a3373d53 rustc: Create a crate metadata cache 2011-03-25 10:44:24 -07:00
Marijn Haverbeke
d4c3059e1e make lexer unicode-aware for strings and char literals 2011-03-25 08:23:00 -07:00
Marijn Haverbeke
a045514477 Start making the standard-lib utf-8 aware
Finally implements _str.is_utf8, adds from_chars, from_char, to_chars,
char_at, char_len, (push|pop|shift|unshift)_char. Also, proper
character I/O for streams.
2011-03-25 08:22:52 -07:00
Marijn Haverbeke
d3b49f5aab fix pretty-printer
A change in 54587bdccb (the vec
appending overhaul) had broken it. (Apparently modifying a vec while
iterating over it can corrupt memory.)
2011-03-25 07:59:13 -07:00
Graydon Hoare
0f9d460e24 Placate win32 build; no idea how it can be working currently on tinderbox. 2011-03-25 00:16:04 -07:00
Lindsey Kuper
bcc104ce79 A first stab at the 'nbody' demo, with support for calling C sqrt(). 2011-03-25 00:15:56 -07:00
Patrick Walton
0b9cf7902c build: Generate an object file for stage0/libstd.dylib 2011-03-24 18:43:32 -07:00
Graydon Hoare
4e49ca8abd Start hooking resolve into creater. 2011-03-24 17:37:32 -07:00
Patrick Walton
af3d0d1848 rustc: Open "use"d crates; add a _vec.vec_from_buf() method along the way; XFAIL use-import-export.rs in rustc 2011-03-24 17:22:07 -07:00
Graydon Hoare
29d853dd19 Remove obsolete Makefiles. 2011-03-24 14:56:51 -07:00
Tim Chevalier
2bd78c176d Improve error message when the lexer sees a bad character 2011-03-24 12:37:12 -07:00
Patrick Walton
c0f66a5240 Add .def.in files that I forgot to stage. Should put out burning tinderboxes on Windows and Darwin. 2011-03-24 12:36:14 -07:00
Patrick Walton
f284c5c1eb Generate the platform-specific .def files at build time 2011-03-24 12:24:22 -07:00
Graydon Hoare
99682db53c Make symbol resolution failures log under rust_log::ERR flag as well. 2011-03-24 12:20:48 -07:00
Graydon Hoare
86f1ace55b Teach creader about reading ty_float, and trim trailing whitespace. 2011-03-24 11:50:45 -07:00
Patrick Walton
f0706d8932 Add trailing semicolons to Linux .def files 2011-03-24 11:50:02 -07:00
Patrick Walton
8c9f5ffc77 Add a Linux .def file. Might put out burning tinderbox. 2011-03-24 11:43:51 -07:00
Patrick Walton
a2b9a7ce8f rustc: Use a .def file for Darwin. Puts out burning Darwin tinderbox. 2011-03-24 11:26:46 -07:00
Patrick Walton
2c21195b21 rustc: Emit a better error message when a type is used where a value was expected 2011-03-24 10:29:15 -07:00
Patrick Walton
8d8a48cfc4 rustc: Don't try to export symbols for crazy architectures from rustllvm.dll. Should unburn the tree on Windows. 2011-03-24 10:29:15 -07:00
Patrick Walton
4c5ab05741 rustc: Switch over to using rustllvm.dll exclusively, ending the "Franken-LLVM" problem 2011-03-23 17:48:53 -07:00
Patrick Walton
41be79acf3 rustllvm: Update rustllvm.def. The old one was missing a lot. 2011-03-23 17:48:01 -07:00
Graydon Hoare
08bea1d9a2 Revert "Change the type of the second argument of upcalls to be a %task*.", breaks win32 build.
This reverts commit dcf122ede0.
2011-03-23 16:31:30 -07:00
Lindsey Kuper
0b63512f4c Support for 'float' in type signatures. 2011-03-23 16:01:29 -07:00
Patrick Walton
c669f20231 rustc: Write out crate metadata 2011-03-23 15:44:17 -07:00
Patrick Walton
c1bc0101ca stdlib: Provide a function to extract the underlying buf_writer from a writer 2011-03-22 17:53:43 -07:00
Tim Chevalier
23e23bd762 Further support for floating-point. Literals with exponents work
and literals with the 'f32' or 'f64' suffixes work as well. In
addition, logging things with the f32 or f64 type works. (float is
still assumed to be a synonym for f64).
2011-03-22 17:31:27 -07:00
Patrick Walton
d56971d5b4 stdlib: Add EBML writing functionality 2011-03-22 17:29:23 -07:00
Patrick Walton
e890383db1 stdlib: Add a convenience method for opening paths as a FILE 2011-03-22 17:29:23 -07:00
Patrick Walton
804771510e Add a test case for empty mutable vector literals, XFAIL'd in rustboot 2011-03-22 16:48:00 -07:00
Patrick Walton
b33f0df152 stdlib: Make writers seekable; switch file writers to the C FILE interface to make this work 2011-03-22 16:40:22 -07:00
Rafael Ávila de Espíndola
dcf122ede0 Change the type of the second argument of upcalls to be a %task*. 2011-03-22 17:50:18 -04:00
Lindsey Kuper
0ce0c4c41a Support for shorter error messages that are aware of objects' cnames. 2011-03-22 14:23:43 -07:00
Patrick Walton
bcf04e253f Revert "Remove usages of case(_) { fail; } since the compiler does this automatically". When we have exhaustiveness checking, "case(_) { fail; }" will be useful to silence warnings.
This reverts commit 92a716d862.
2011-03-22 14:02:52 -07:00
Patrick Walton
6623597c18 lib: Add an EBML reader module 2011-03-22 14:00:27 -07:00
Tim Chevalier
8556b2c1ad Added test case for floats 2011-03-22 09:42:31 -07:00
Brian Anderson
1689d99965 Add some nesting to the else-if test case 2011-03-22 08:11:38 -07:00
Brian Anderson
92a716d862 Remove usages of case(_) { fail; } since the compiler does this automatically 2011-03-22 08:11:34 -07:00
Brian Anderson
530fe1daea Add a cleanup to trans_send. Express further confusion about cleanups in trans_recv 2011-03-22 08:04:53 -07:00
Brian Anderson
0bcf49305c Add test for sending strings over channels 2011-03-22 08:04:51 -07:00
Brian Anderson
cddd8094da Remove a todo from trans_chan that doesn't appear necessary 2011-03-22 08:04:49 -07:00
Brian Anderson
3dcb79dac9 Add a regression test for channels of nil, which happens to work in rustc, but not in rustboot 2011-03-22 08:04:47 -07:00
Brian Anderson
c02cdc32a8 Generalize send/recv to work for more types 2011-03-22 08:04:45 -07:00
Brian Anderson
e20e7995ac Un-XFAIL task-comm-4, 5 & 6 2011-03-22 08:04:43 -07:00
Brian Anderson
39c01c97ba Fix trans_recv 2011-03-22 08:04:41 -07:00
Brian Anderson
b2ee569c23 Implement trans_send and a broken trans_recv 2011-03-22 08:04:39 -07:00
Brian Anderson
261d1e4c61 Add codegen for ports and chans 2011-03-22 08:04:38 -07:00
Graydon Hoare
7ac885ee8c Repair some fallout from pcwalton's last few build changes. 2011-03-21 23:06:42 -07:00
Tim Chevalier
1e1ff638a3 Make floating-point operations work (neg, add, sub, mul, div, rem,
and comparison ops.)
2011-03-21 18:10:34 -07:00
Tim Chevalier
caa22c9341 Started adding support for floating-point type, floating-point literals, and logging of floats. Other operations on float probably don't work yet. 2011-03-21 18:10:34 -07:00
Patrick Walton
0943475f37 Add a suitable .def file for rustrt.dll on Windows 2011-03-21 18:01:25 -07:00
Patrick Walton
e56a1720e4 Add a "last" function to return the last element of a vector to the standard library 2011-03-21 17:21:35 -07:00
Patrick Walton
71de17d38e Add a binding to ftell() 2011-03-21 16:41:18 -07:00
Rafael Ávila de Espíndola
933c01bd15 Every upcall needs a task pointer to find the C stack. It is just that when
handling cdecl call they should skip it when calling the final function.

There is some cleanup to be done on the generated IL, but this gets us
running Hello World for real.
2011-03-21 17:53:11 -04:00
Rafael Ávila de Espíndola
f3057244a6 Make the wrapper function of native functions private. 2011-03-21 16:02:00 -04:00
Rafael Ávila de Espíndola
12e7feb71c The T_taskptr is already included in the n_args, don't add it twice. 2011-03-21 15:15:22 -04:00
Patrick Walton
3dec5b5e50 rustc: Remove uses of Unicode in type deserialization and fix vector-push operations 2011-03-21 12:03:34 -07:00
Patrick Walton
84c0d8638e rustc: Update type serialization and deserialization for the "mutable?" change 2011-03-21 11:44:08 -07:00
Marijn Haverbeke
86d05655b4 rustc: Merge in type serialization and deserialization
Signed-off-by: Patrick Walton <pcwalton@mimiga.net>
2011-03-21 11:35:04 -07:00
Patrick Walton
0366f5ae23 Add some C99 and C++ compatibility headers for MSVC 2011-03-21 10:24:00 -07:00
Rafael Ávila de Espíndola
e687dd5ce7 Make lltaskptr a regular argument element in args in calls to trans_upcall2. 2011-03-21 11:59:14 -04:00
Rafael Ávila de Espíndola
770a49520c Move calls to PtrToInt out of trans_upcall2. 2011-03-21 11:11:22 -04:00
Graydon Hoare
4b946cea35 Modify native_item_fn to handle trailing linkage names that differ from the item name (used in win32 build of std.dll) 2011-03-20 20:18:19 -07:00
Graydon Hoare
0c7545c1ce Switch win32 path_sep to '/', add comment explaining a bit. 2011-03-20 19:43:43 -07:00
Graydon Hoare
460d89156f Add slightly nicer failure message to io.rs when it can't open a file. 2011-03-20 19:43:41 -07:00
Patrick Walton
d31bfc8692 rustc: Internalize glue. Cuts libstd size by 8% or so. 2011-03-20 15:05:13 -07:00
Graydon Hoare
ff22bdfb6e Fix indentation in tidy. 2011-03-19 18:34:46 -07:00
Patrick Walton
277d42f589 rustc: Only declare each native function once. std.rc now links. 2011-03-19 17:33:46 -07:00
Patrick Walton
a1aad28690 rustc: Use the right block context to generate unary operands. std.rc compiles now. For realz. 2011-03-19 15:03:21 -07:00
Patrick Walton
8e597b295f rustc: Allow arguments to be captured as upvars. std.rc compiles now, except for the lack of a main fn. 2011-03-19 14:26:12 -07:00
Patrick Walton
c710c9a1b8 rustc: Do argument casts before loading aggregates, not after 2011-03-19 13:58:48 -07:00
Patrick Walton
3f2bae4449 rustc: Implement int-to-native casts 2011-03-18 18:49:59 -07:00
Patrick Walton
e6b6d1b645 rustc: Make trans_path() generic-safe wrt nullary tags 2011-03-18 18:45:49 -07:00
Patrick Walton
95dc89f012 rustc: Make iter_structural_ty_full() generic-safe wrt tags 2011-03-18 18:34:06 -07:00
Patrick Walton
8c48fae726 rustc: Do pointer casts when casting native types 2011-03-18 18:12:58 -07:00
Patrick Walton
9c0c0af1b2 rustc: Fix inference for auto slots (forgot to stage changes before) 2011-03-18 17:45:47 -07:00
Patrick Walton
082e5a5e5d rustc: Fix inference for auto slots. Add a test case. 2011-03-18 17:43:56 -07:00
Patrick Walton
f3b58947c0 rustc: Don't always build a constant multiply instruction when translating literal vectors; the size of the referent isn't always constant 2011-03-18 16:41:56 -07:00
Patrick Walton
533dea772f rustc: Move type_of() behind the check for dynamic size in trans_vec() 2011-03-18 16:34:22 -07:00
Patrick Walton
78bcfe28f2 rustc: Create global variable constants during the collection phase 2011-03-18 16:24:01 -07:00
Patrick Walton
8ff77b14a9 rustc: Make iter_sequence() work with generic vectors 2011-03-18 16:04:16 -07:00
Patrick Walton
9ad9d3783d rustc: Fix list.foldl() to pass its second argument by alias 2011-03-18 15:19:32 -07:00
Patrick Walton
47d650e25b rustc: Box the tuples returned by hashmap.items() for now since we don't have alias iterators yet 2011-03-18 15:18:45 -07:00
Patrick Walton
ebee49314b rustc: Get type params from the item when translating native items 2011-03-18 15:01:45 -07:00
Patrick Walton
a9ba76d52a Fix bug in string comparison. std.rc typechecks now. 2011-03-18 14:15:27 -07:00
Patrick Walton
0cf16e77ca Add "mutable?" to _vec in the standard library; fix callers 2011-03-18 14:01:03 -07:00
Patrick Walton
368eb4bab6 Add some mutable variants of vector functions to the standard library 2011-03-18 13:53:49 -07:00
Patrick Walton
8b82a549bf rustc: When encountering "mutable" as a tycon, parse it, drop it on the floor, and emit a warning 2011-03-18 13:44:54 -07:00
Patrick Walton
8aa946ff5e Make some standard library pieces no longer dependent on mutable parameters, which rustc doesn't support 2011-03-18 13:32:15 -07:00
Patrick Walton
e8938f5fb2 rustc: Unify over alt expressions 2011-03-18 12:49:48 -07:00
Patrick Walton
6f65ce5255 rustc: Add a span_unimpl() for debugging 2011-03-18 12:30:44 -07:00
Patrick Walton
949ba9ca46 rustboot: Parse, and ignore, "mutable?" 2011-03-18 12:05:04 -07:00
Patrick Walton
2ef9c01ffc rustc: Implement "mutable?". Add a test case and XFAIL it in rustboot for now. 2011-03-18 11:49:47 -07:00
Patrick Walton
5eca7129e3 rustc: Switch mutability from being a type constructor to a field annotation 2011-03-17 17:39:47 -07:00
Patrick Walton
ed96688be5 rustc: Typo: mutabliity -> mutability 2011-03-17 16:39:10 -07:00
Graydon Hoare
3ae9ca444c Move Makefile.in and configure to top level, BOOT_-qualify names, various tweaks. 2011-03-17 14:26:32 -07:00
Patrick Walton
67bac63aa3 rustc: Correctly report mutability when stringifying types 2011-03-17 11:54:00 -07:00
Patrick Walton
2ca66718ce rustc: Consider native types to be scalar 2011-03-17 11:46:21 -07:00
Patrick Walton
55587a554c rustc: Sort object methods when parsing textual types in the AST 2011-03-17 11:40:05 -07:00
Patrick Walton
bc51842d4f rustc: Don't go over inner functions' locals during the writeback phase of typechecking 2011-03-17 11:23:17 -07:00
Patrick Walton
84321d1f59 Add an option.is_none() method 2011-03-17 11:21:11 -07:00
Patrick Walton
ea7197e2cf rustc: Add str_from_cstr() and str_from_buf() functions to the standard library, as well as a test case 2011-03-16 18:42:08 -07:00
Graydon Hoare
320ac6b8eb Teach configure.sh to probe paths, factor a bit. 2011-03-16 17:36:49 -07:00
Graydon Hoare
6a6a30b792 Remove uses of 'break' in std lib; rustc doesn't support it yet, this is easier for now. 2011-03-16 16:47:27 -07:00
Patrick Walton
e1d2899553 Add a "rustllvm.def" file for Windows' linker to use. This allows us to create our own LLVM shared library on that platform. 2011-03-16 16:11:24 -07:00
Graydon Hoare
85c073dd3e Disable built-in rules in makefile, speed up win32 build. 2011-03-16 15:21:57 -07:00
Rafael Ávila de Espíndola
9dc3f3f183 Fixed version of my previous patch to rename the upcall functions. This time also update the inline assembly. 2011-03-16 18:09:12 -04:00
Graydon Hoare
54587bdccb Switch all vases of vec += elt to vec += vec. Prohibit former in rustboot. Tweak std lib vec fns in process. 2011-03-16 14:58:02 -07:00