Commit Graph

1022 Commits

Author SHA1 Message Date
Patrick Walton
3d0da75455 rustboot: For error reporting, map tag IDs to *tag* names, not to tag *variant* names 2010-10-26 15:37:49 -07:00
Patrick Walton
7e3c662b4f rustboot: Use a less hacky method to report tag names in error messages, which works for resolve errors as well 2010-10-26 14:52:31 -07:00
Patrick Walton
7ed8b781d5 Thread a source location though for type error reporting instead of the awful "List.hd scopes" hack 2010-10-25 18:16:34 -07:00
Patrick Walton
af39e222bc Merge commit '1875a36feecb7dab183a59ead2d0a342f733422e' 2010-10-25 17:58:41 -07:00
Patrick Walton
1875a36fee Prevent Not_found in the unfortunate case when we have to "friendly_stringify" a tag type we haven't yet recorded into cx.ctxt_all_tag_info 2010-10-25 17:58:24 -07:00
Graydon Hoare
f3b7aa9068 Long line police. 2010-10-22 19:37:03 -07:00
Graydon Hoare
3bf775e80f Pass outptr as in rustboot. Probably need to revisit this ABI. Also disgusting hack employed. Please remove. 2010-10-22 19:35:48 -07:00
Graydon Hoare
b2f07c6056 Collect all fns first so decl order doesn't matter to translation. 2010-10-22 19:31:33 -07:00
Graydon Hoare
d4497e481e Extremely broken hacked-up incorrect attempt at 'ret'. 2010-10-22 19:23:10 -07:00
Graydon Hoare
a0867e0ccf More fire-fighting. 2010-10-22 17:54:27 -07:00
Graydon Hoare
e5229b97d7 Don't use string == in x86.rs, doesn't work. 2010-10-22 17:27:22 -07:00
Graydon Hoare
cb254f3558 Merge branch 'master' of github.com:graydon/rust 2010-10-22 17:24:05 -07:00
Graydon Hoare
bd9a8fd57b Attempt to extinguish burning tree. 2010-10-22 17:23:53 -07:00
Patrick Walton
05a3c5c0f3 rustc: Add an "_" prefix to assembler-generated symbols on Mac 2010-10-22 16:16:02 -07:00
Graydon Hoare
6d47d2abde Implement check-exprs, un-xfail 5 rustc tests. 2010-10-22 15:37:42 -07:00
Patrick Walton
fc8b5155a8 rustboot: If the user tries to instantiate a non-parametric type with type parameters, report the location of the error 2010-10-22 15:12:48 -07:00
Graydon Hoare
6ec402d4a6 Add makefile bits to run rustc on the testsuite as part of 'make check'. Mostly xfailed. 2010-10-22 14:46:03 -07:00
Graydon Hoare
76dc0ae995 Match llvm xfails inside-out, to make life a little less painful. 2010-10-22 13:43:25 -07:00
Graydon Hoare
25263c9576 Make test targets in Makefile end in -boot.x86 or -boot.llvm when made by rustboot. 2010-10-22 12:12:01 -07:00
Graydon Hoare
36aea66e47 Give rustc the beginnings of an option-processing loop (at least -nowarn, -h and -o). 2010-10-22 11:47:28 -07:00
Graydon Hoare
74eda5bb70 Make append take a mutable &. Not even checked at present, tsk tsk. 2010-10-22 11:46:54 -07:00
Graydon Hoare
dd0d255737 Add some filename helpers to os. 2010-10-22 11:46:33 -07:00
Graydon Hoare
05c9d885dd Change vec slice to use uint, add push/pop/shift/unshift. 2010-10-22 11:46:04 -07:00
Graydon Hoare
3f80e79efc Add support for passing args to fns in rustc. 2010-10-21 18:13:57 -07:00
Graydon Hoare
67477b85ae Support basic function calls in rustc. 2010-10-21 17:24:26 -07:00
Graydon Hoare
3aaae2a881 Teach rustc to parse call exprs. 2010-10-21 16:42:02 -07:00
Ralph Giles
eec259f625 Fix a typo in the previous commit.
(cherry picked from commit 11d2af72cf956cc28549cfd280ba40de1645eee7)
2010-10-21 16:06:47 -07:00
Ralph Giles
6b9a9a7874 Check the llvm version against a fixed list.
This change is thanks to Peter Hull, who independently resolved
the 2.8 vs 2.8svn issue this way. His patch checked the version
string against a fixed set of options, which is easier to read
and simpler to adjust in the future.
(cherry picked from commit 83cc297561a78ad13fcd1c2943f17ace81c725b8)
2010-10-21 16:06:39 -07:00
Ralph Giles
c3879c19c2 Also search the bare ocaml standard library path for llvm bindings.
Ubuntu ships the llvm bindings in /usr/lib/ocaml/llvm/ but Fedora
is installing them directly in /usr/lib/ocaml so we need to check
there as well.

The patch is untested; Fedora 14, the current beta, includes llvm 2.7.
It does add an unnecessary -I directive, but should at least have a
better chance of working on Fedora 15.
(cherry picked from commit 8af7360bd3de851668a133ae6ba4419e3722c6aa)
2010-10-21 16:06:21 -07:00
Ralph Giles
45056fc022 Update llvm version detection for the 2.8 release.
The LLVM project recently released version 2.8, and updated
the SVN tree version to 2.9svn, obsoleting the simple check
for 'llvm-config --version' returning 2.8svn.

With this commit we instead check for the substrings 2.8 and 2.9
in the output of 'llvm-config --version', since we (currently)
support both the svn and released varieties of those versions.

A stable release also complicates our check for the ocaml bindings.
Previously we looked in `llvm-config --libdir`/ocaml which is
appropriate for local compiles, but distribution packagers are
likely to put the bindings in the default search path, e.g.
/usr/lib/ocaml/llvm. We now fall back to trying variations on
the standard library path returned by 'ocamlc -config' if we
don't find it under 'llvm-config --libdir'.

With this change, rust builds against LLVM 2.8 as packaged
in Ubuntu 10.10 as well as LLVM 2.9svn compiled locally.
(cherry picked from commit b606b65756f087c403180abd5418fe7dce469758)
2010-10-21 16:06:15 -07:00
Graydon Hoare
a7599a7968 De-burninate tree. 2010-10-21 15:02:05 -07:00
Dave Herman
6421c13157 eliminated bitv.test, which now lives in test/run-pass 2010-10-21 13:34:16 -07:00
Dave Herman
dbe27199b8 line length police; moved comp.util.bits to std.bitv 2010-10-21 11:39:53 -07:00
Patrick Walton
194f38fdff rustboot: Don't use ridiculous type names when describing simple types like int and uint 2010-10-21 11:31:04 -07:00
Patrick Walton
a7840f02b0 Use "friendly" type names when reporting a "mismatched type-params" error 2010-10-21 11:14:38 -07:00
Dave Herman
852c0d6631 oops, removed bits.test() from main 2010-10-21 08:06:44 -07:00
Dave Herman
da8b6795c7 tests and bugfixes: fns take aliases, fixed binary arithmetic in create, eliminated wasted bit per uint 2010-10-21 07:36:13 -07:00
Dave Herman
ce3224652f simpler computation of uint_bits(), plus whitespace police 2010-10-20 22:04:19 -07:00
Patrick Walton
9a539a5dd1 Move the "friendly" type printer to semant 2010-10-20 17:58:55 -07:00
Dave Herman
8f71dad2c9 created a first draft of the bit-set library needed for typestate 2010-10-20 17:04:15 -07:00
Patrick Walton
11deb2f5f1 Eliminate <tag#> stuff from the "friendly" type errors 2010-10-20 15:36:30 -07:00
Patrick Walton
4bb675ba42 Print better error messages when the number of type params is wrong 2010-10-20 11:22:44 -07:00
Patrick Walton
28d43678b6 Add a virtual destructor to rust_thread in sync.h, to quiet the compiler 2010-10-20 10:32:36 -07:00
Graydon Hoare
368943998d Translate lazy && and || operators in rustc. 2010-10-19 17:24:15 -07:00
Graydon Hoare
71b1f1d117 Parse and translate assignments. 2010-10-19 16:33:11 -07:00
Graydon Hoare
b8cca0971f Teach trans to allocate, initialize and load from local variables. 2010-10-19 14:54:10 -07:00
Patrick Walton
10d628dbd0 Add a type slot to the AST 2010-10-19 13:28:43 -07:00
Patrick Walton
e497fe981b Partial work on adding types to the AST 2010-10-19 13:10:39 -07:00
Graydon Hoare
4a3edb320d Store items and decls in vecs to preserve input order, index externally. Implement block-local name lookup. 2010-10-18 18:19:16 -07:00
Graydon Hoare
865bbae685 More work on resolving names in rustc. Basic expr_name lookup working on items and args. 2010-10-18 16:15:25 -07:00
Graydon Hoare
23a00fd092 Disable use of parametric tail call in map.rs, they don't presently work. 2010-10-18 16:04:47 -07:00
Graydon Hoare
f747101b7c Rewrite session formatting to use #fmt extension. 2010-10-18 16:03:22 -07:00
Graydon Hoare
68321b0de8 Make list.find return an option of different type than the list element. 2010-10-18 16:02:59 -07:00
Graydon Hoare
67d4427345 Begin sketching name lookup in rustc. 2010-10-18 14:37:30 -07:00
Graydon Hoare
05e7374e29 Expand rustc's fold to update env on block boundaries. 2010-10-18 14:36:40 -07:00
Graydon Hoare
7801ba9dfe Make type errors in rustboot report the friendly type of both expected and actual. 2010-10-18 14:36:17 -07:00
Graydon Hoare
783be711f5 Flesh out the std.list module a touch. 2010-10-18 14:35:44 -07:00
Patrick Walton
1c3e95e0a5 Roll back the expr->lval change. We're now LL(1) again. 2010-10-18 11:31:31 -07:00
Graydon Hoare
57c7e94c8f Encode and decode tag types in dwarf properly. Add list module to std. Shift rustc to use std.util.option. Fix various dependent bugs. Closes #73. 2010-10-15 22:09:09 -07:00
Graydon Hoare
fc2d4828e7 Finish the fold drivers in fold.rs. 2010-10-14 18:14:09 -07:00
Patrick Walton
5826a2e3de rustc: Parse field and vector indexing expressions 2010-10-14 17:42:06 -07:00
Graydon Hoare
ff4e9f9141 Enable resolve pass in rustc. Doesn't do much yet aside from an incomplete identity fold, but no longer crashes. 2010-10-14 15:53:28 -07:00
Graydon Hoare
6993346e7d Stop using bound refs (don't work; leak) and work around auto-deref vec-append bug. 2010-10-14 15:52:42 -07:00
Graydon Hoare
5a51716790 Fix mem += mem bug in vec-append. 2010-10-14 15:51:54 -07:00
Graydon Hoare
09b12d167f Fix typos in Type.friendly_stringify. 2010-10-14 15:27:50 -07:00
Patrick Walton
699ef987d7 rustc: Start work on lvals 2010-10-14 15:20:27 -07:00
Patrick Walton
c7ab80f743 Typecheck tags in "alt" patterns 2010-10-14 15:08:19 -07:00
Graydon Hoare
f234750d80 Fix crasher in rustc. 2010-10-14 12:41:48 -07:00
Graydon Hoare
668f3a90a8 Move the friendly-names table to semant, reuse it in the name mangler. 2010-10-13 17:15:25 -07:00
Graydon Hoare
52c2a1549c Fetch typarams from the outermost item frame, when inside an iter-block. One less crash in rustc. 2010-10-13 15:53:38 -07:00
Patrick Walton
1e19fc969e Use "friendly" types throughout the typechecker 2010-10-13 15:34:18 -07:00
Patrick Walton
45a61b5191 Don't run tidy inside etc/. Should put out the burning tinderbox. 2010-10-13 15:21:42 -07:00
Patrick Walton
e129a9b4ce Use the user-defined type aliases when reporting type errors 2010-10-13 15:14:04 -07:00
Patrick Walton
5c622b6ecb rustc: Lex identifiers that have numbers in them too 2010-10-13 11:02:56 -07:00
Patrick Walton
d50d481529 rustc: Parse vector types 2010-10-13 10:55:20 -07:00
Patrick Walton
b7e6d9895e First stab at a Vim syntax highlighter for Rust 2010-10-13 10:43:19 -07:00
Graydon Hoare
69ae63d4b0 Fix horribly embarassing signedness bug in backend, plus related regressions. 2010-10-12 16:51:27 -07:00
Patrick Walton
81a43ef698 rustc: Add mutability to tuple literals 2010-10-12 16:30:44 -07:00
Patrick Walton
b1ca4da3b3 rustc: Parse box types 2010-10-12 14:54:49 -07:00
Patrick Walton
a41aa5595b rustc: Parse tuple types 2010-10-12 14:15:59 -07:00
Graydon Hoare
beb4c07e26 Git index wins again. 2010-10-12 12:28:46 -07:00
Graydon Hoare
76f7b043bc Changes to make rustboot compile on OCaml 3.12 2010-10-12 12:16:35 -07:00
Patrick Walton
0415841504 rustc: Add the tuple type to the AST 2010-10-11 18:42:10 -07:00
Patrick Walton
c9afe78c0c Parse autos 2010-10-11 18:20:25 -07:00
Patrick Walton
8a7a0308e3 rustc: Parse lets 2010-10-11 18:13:14 -07:00
Patrick Walton
a2c9879442 rustc: Say "expected expression" instead of "expected literal" when we expect an expression 2010-10-11 17:21:36 -07:00
Patrick Walton
5177898db1 Use new and delete instead of alloca(). Should put out the burning tinderbox. 2010-10-11 17:11:59 -07:00
Patrick Walton
94cec74096 Try to print backtraces on failure 2010-10-11 16:40:18 -07:00
Patrick Walton
99086292ac Bind labels explicitly in fe/cexp.ml. Should fix issue #169. 2010-10-11 10:51:57 -07:00
Graydon Hoare
594cf63214 Remove obsolete comment, issue was fixed with last checkin. 2010-10-10 00:17:41 -07:00
Graydon Hoare
caaf8679d8 Teach bind to actually bind typarams, as it claims to. 2010-10-10 00:14:26 -07:00
Graydon Hoare
9fc963842d Subject copying code to inline heuristic, cut 30kb from rustc. 2010-10-09 01:35:50 -07:00
Graydon Hoare
a441865f6e Actually do what I meant to in the inline threshold. Don't drink and code. Cut rustc by 50kb. 2010-10-09 01:02:13 -07:00
Graydon Hoare
967a6f861d Elide mark and sever glue in -minimal mode. 2010-10-09 00:47:02 -07:00
Graydon Hoare
3e513008b1 More type-fold caches, shave another second off compile time. 2010-10-09 00:31:26 -07:00
Graydon Hoare
f956067867 Implement a -minimal mode prologue, cut 100kb from rustc. 2010-10-08 23:58:48 -07:00
Graydon Hoare
39f51b31df Quad counters are revealing. Move drops out-of-line, cut 200kb from rustc. 2010-10-08 23:32:18 -07:00
Graydon Hoare
ef5a64e2cf Add quad-counting system. 2010-10-08 23:25:37 -07:00
Graydon Hoare
71c266f937 Fix logging bug. 2010-10-08 23:17:29 -07:00
Graydon Hoare
81e791d7b9 Add a tag cache for the cases we can't avoid hitting fold; cut rustc compile time by 50%. 2010-10-08 17:43:46 -07:00
Graydon Hoare
97a6b0935b More fold caches, cut rustc compile time by 60% again. 2010-10-08 15:56:17 -07:00
Graydon Hoare
f1e2c379cb Cache referent-type calculations in rustboot; cut rustc compile time by 60%. 2010-10-08 15:17:27 -07:00
Graydon Hoare
5f2459145c Add -lpath mechanism for logging only a subset of a pass (by module-path prefix) 2010-10-08 14:54:51 -07:00
Patrick Walton
e3758fe321 rustc: Make functions output a type, not a slot 2010-10-08 12:26:34 -07:00
Graydon Hoare
785d9b1594 Add a little code to resolve, to check that the fold interface works. 2010-10-07 18:34:22 -07:00
Graydon Hoare
facc5f8826 Make minimal-mode slightly less aggressive. 2010-10-07 18:21:06 -07:00
Graydon Hoare
b184be07e1 Revise folds to be much-less-polymorphic after some discussion; flesh out stmt and expr fold drivers. 2010-10-07 16:42:48 -07:00
Graydon Hoare
e553ab9fc0 Simplify type-mismatch messages. 2010-10-07 13:15:38 -07:00
Graydon Hoare
fa5ef4cfb6 Add the beginnings of an ast folder plus an empty module for resolve. 2010-10-06 18:36:28 -07:00
Graydon Hoare
5f2d35ed08 Make ast node box uses more uniform in rustc. 2010-10-06 15:41:14 -07:00
Graydon Hoare
8ecbe49a8f Add -minimal mode to rustboot that skips emitting code that's broken or unneeded for rustc. Shrink rustc by 300kb. Back under 1mb. 2010-10-05 18:44:39 -07:00
Graydon Hoare
d1e59d6910 Add input coordinate tracking to all major rustc ast nodes. 2010-10-05 18:21:44 -07:00
Graydon Hoare
4168c1dcda Add -lpasses for logging just the progress of passes. 2010-10-05 18:10:33 -07:00
Graydon Hoare
cdf67b1f2e Better backpointer logic. 2010-10-05 18:09:49 -07:00
Patrick Walton
246e72b0fb Use RTLD_GLOBAL when loading libraries. This is needed to get LLVM working on the Mac in rustc. 2010-10-05 11:37:46 -07:00
Graydon Hoare
19d0fa107a Improve name nodes to ast, teach to parse qualified names, put out flaming tinderbox. 2010-10-04 17:25:52 -07:00
Graydon Hoare
44e4b2d63a Teach rustc about phi nodes, block relationships. Translate if- and block-expressions. 2010-10-04 15:55:12 -07:00
Graydon Hoare
a87e81b929 Support refcount-drop and conditional free in rustc. 2010-10-01 18:25:42 -07:00
Graydon Hoare
d07f7533b0 Sketch out #fmt syntax extension in rustboot. 2010-10-01 14:54:40 -07:00
Graydon Hoare
2e0d075407 Fix bug in bind thunks failing top drop unbound args; add test and adjust rustc to use bind again. 2010-09-30 17:39:37 -07:00
Graydon Hoare
62c224ffe4 Drop slots on block exits even when blocks have no statements. Part way to fixing bind leakage in rustc. 2010-09-30 16:10:30 -07:00
Peter Hull
f6e3e6903b Initial check-in of 99 Bottles Of Beer
using different methods (simple, iterator, tail-call, pattern match)
2010-09-30 13:50:25 -07:00
Or Brostovski
4a3404803b implemented break for while-loop case
ast.ml - added break and cont statements
item.ml - added break and cont statements
lexer.mll - added break and cont statements
token.ml - added break and cont statements
trans.ml - implemented the break statement for the while-loop case
         - replaced hash table accesses with get_stmt_depth where needed
type.ml = added break and cont statements
typestate.ml - implemented the break statement for the while-loop case
             - added shorthand filter_live_block_slots
walk.ml - added break and cont statements
while-with-break.rs - code for testing while loops
2010-09-30 13:45:57 -07:00
Or Brostovski
74cb9508cd Closed issue 154 - prevents compiler from compiliing a line to zero statements 2010-09-30 13:40:34 -07:00
Graydon Hoare
b970563fe3 Patchwork of attempted fixes to effect system and gc system; eventually give up and disable it entirely in the runtime. Will need extensive reworking. 2010-09-29 17:22:13 -07:00
Patrick Walton
7e733bf2ee Allow tag recursion through vectors as well as boxes 2010-09-29 16:58:42 -07:00
Graydon Hoare
f13306e8d6 Switch boolean operands to 1-bit, as llvm prefers. Will promote to 8-bit when storing to memory. 2010-09-28 16:17:28 -07:00
Graydon Hoare
5a4cb3ef36 Translate a modest selection of easy binops. 2010-09-28 14:01:21 -07:00
Graydon Hoare
11e72fd4e0 Translate literal int, char, bool and str types, as well as logging them. 2010-09-28 12:23:40 -07:00
Graydon Hoare
fbea4d04b7 More rustc expr-parsing logic. 2010-09-28 10:30:34 -07:00
Graydon Hoare
5b4b035c7a Start building up the expression tower. 2010-09-27 18:25:02 -07:00
Graydon Hoare
f5787ed80c Translate exit-task glue such that rustc's output programs exit properly. 2010-09-27 15:38:34 -07:00
Graydon Hoare
a2f4d9089a Fix indexing bug in rustc's indirect-upcall arg-copying loops. 2010-09-27 14:42:58 -07:00
Graydon Hoare
d31eca41d5 First linkable and executable translation from rustc. Upcalls to log, passes wrong arg, crashes. Baby steps. 2010-09-27 13:43:53 -07:00
Graydon Hoare
d53209c927 Construct the crate constant in rustc. 2010-09-24 16:41:01 -07:00
Graydon Hoare
b69a0c137c Modify the task type to not contain any opaques; apparently these make LLVM cross. 2010-09-24 15:22:48 -07:00
Graydon Hoare
4cfc4250bf More work on trans, almost getting to the point of emitting an upcall. 2010-09-24 14:56:04 -07:00
Graydon Hoare
6b412be619 Wrap long line. 2010-09-23 18:42:49 -07:00
Graydon Hoare
274128c6b2 Add trans.get_upcall and skeleton for trans_log. 2010-09-23 18:38:37 -07:00
Graydon Hoare
730439c508 Improve LLVM builder wrapper-object. 2010-09-23 18:38:09 -07:00
Graydon Hoare
2db1f864e2 Declare the global and upcall glues as ValueRefs in rustc's trans. 2010-09-23 17:16:34 -07:00
Graydon Hoare
bba4cae1b8 Resolve constant types through to their definitions. 2010-09-23 17:11:30 -07:00
Graydon Hoare
46e46d0b49 Translate a bunch of the material (lltrans, llasm, abi) from rustboot to rustc, and move files around. 2010-09-23 15:46:31 -07:00
Graydon Hoare
2c514f33f2 More fleshing-out on rustc.me.trans. Emitting modules and fns corresponding to parsed input now. 2010-09-23 13:15:51 -07:00
Graydon Hoare
04a55df54b Flesh out rustc.me.trans to construct functions, basic blocks and builders off the AST. 2010-09-22 17:05:38 -07:00
Graydon Hoare
4d17283371 Add 'items' iter to hashmap. 2010-09-22 17:04:08 -07:00
Graydon Hoare
2880ecd73f Reformat standard library; no code changes. 2010-09-22 15:44:13 -07:00
Graydon Hoare
738fe078a4 Move llvm-using code in rustc to trans module. 2010-09-22 15:27:40 -07:00
Graydon Hoare
e0f682e5fb Add some basic string functions: index, rindes, find, substr, split, concat, connect. 2010-09-22 15:27:40 -07:00
Graydon Hoare
fc6f307787 Fix linear for loops on strings to not hit trailing null. 2010-09-22 15:27:35 -07:00
Graydon Hoare
913882de7f Make deps via temps, to avoid syntax errors wedging deps. 2010-09-22 15:27:24 -07:00
Graydon Hoare
264c765931 Revert "Make recursive type verification logic better by allowing it to see through multiple levels of indirection. Still can trigger "unexpected OpaqueTy" bugs, but that's better than infinite loops."
This reverts commit 751a47cc5a.

Broken build.
2010-09-22 10:57:58 -07:00
Patrick Walton
751a47cc5a Make recursive type verification logic better by allowing it to see through multiple levels of indirection. Still can trigger "unexpected OpaqueTy" bugs, but that's better than infinite loops. 2010-09-21 19:15:47 -07:00
Patrick Walton
742b1c5793 Report an error instead of asserting when an item name is already in use 2010-09-21 17:38:47 -07:00
Graydon Hoare
1f0621d04e Begin teaching rustc to parse literals, atoms, stmts, blocks, items, modules, crates. 2010-09-21 16:22:32 -07:00
Graydon Hoare
8beb118df4 Add insn-selection fixup-name logging. 2010-09-21 16:21:30 -07:00
Graydon Hoare
b549721a2e Tighten pattern parsing on 0-ary constructors. 2010-09-21 16:18:47 -07:00
Graydon Hoare
9f0a6c21b2 Implement preliminary form of structured compare. No boxes, vectors or strings yet. 2010-09-21 11:47:10 -07:00
Graydon Hoare
72cc89c8c3 Add QUES to comp/fe/lexer.rs, rustc can self-lex again. 2010-09-21 08:30:06 -07:00
Graydon Hoare
28b9357a0c Kill residual dead code in Trans.iter_tag_parts. Shaves a couple kb off rustc. 2010-09-21 08:28:19 -07:00
Graydon Hoare
71d49a20a7 Skip 0-ary tag ctors in Trans.iter_tag_parts. Rustc loses 150kb. 2010-09-21 00:13:59 -07:00
Graydon Hoare
c5f4789d5b Bind pattern slots with ?, drop parens from 0-ary tag constructors, translate 0-ary constructors as constants. Rustc loses ~300kb. 2010-09-20 23:56:43 -07:00
Graydon Hoare
acdec30149 Wrap long lines. 2010-09-20 20:46:44 -07:00
Graydon Hoare
c17964c06d Use name_base in plval base. 2010-09-20 20:19:22 -07:00
Roy Frostig
dda16f807c Add issue #163 testcase to str-append testcase. 2010-09-20 17:42:14 -07:00
Roy Frostig
3c3421e01d When translating vec-append, delay destination string's null-byte-accounting length decrement until the destination string has already been resized. Closes #163. 2010-09-20 17:26:24 -07:00
Graydon Hoare
7ab3b305e4 Move id counters into sess in preparation for moving desugaring to middle-end. 2010-09-20 13:06:49 -07:00
Graydon Hoare
5536af3d48 Beginnings of post-resolve simplify pass. 2010-09-16 16:59:37 -07:00
Patrick Walton
bc03c82c79 Check for infinitely sized tags. Un-XFAIL test/compile-fail/infinite-tag-type-recursion.rs. 2010-09-16 16:24:19 -07:00
Patrick Walton
659d1e1b7d Actually build the graph properly. Oops. 2010-09-16 16:20:00 -07:00
Patrick Walton
32103089d3 Create tag nodes for all the tags beforehand 2010-09-16 15:38:49 -07:00
Graydon Hoare
9dac49bcd6 Resolve plvals to their defns. 2010-09-16 15:04:40 -07:00
Patrick Walton
d92e30d773 Populate the tag containment relation 2010-09-16 14:21:24 -07:00
Graydon Hoare
c4c73e09f1 Add a pexp-rebuild phase to the type resolution pass in resolve.ml. 2010-09-16 12:34:07 -07:00
Patrick Walton
01a76e21a6 Better representation of tag containment, which will allow us to discern backreferences 2010-09-16 11:28:55 -07:00
Patrick Walton
a4a8bea3cc Add ctxt_tag_containment to the Semant context 2010-09-16 11:06:41 -07:00
Patrick Walton
1676a389be Switch the "expected" and "actual" types for function parameter mismatches 2010-09-16 10:26:20 -07:00
Patrick Walton
09793dd0c8 Not finding a name in a module isn't a bug, it's an error. Report it as such. 2010-09-16 10:26:19 -07:00
Michael Bebenita
1bd331b7aa Fixed deadlock caused by the message pump not being notified of new message sends. 2010-09-16 00:51:03 -07:00
Graydon Hoare
91b4a0c9f8 Add beginnings of a fuzzer to rustboot. 2010-09-16 00:26:19 -07:00
Graydon Hoare
cd1a765c6f Add Peter Hull's contributed translation of the fasta shootout benchmark (integer-only version). 2010-09-15 18:22:10 -07:00
Graydon Hoare
e270ab6fbf Minor improvements to pretty-printer. 2010-09-15 18:14:14 -07:00
Graydon Hoare
e6729a66ec Teach walk about plvals and pexps. 2010-09-15 17:44:57 -07:00
Graydon Hoare
5c82cb42e7 Add Ast.ATOM_pexp and -pexp mode wherein pexps live beyond parsing, into later stages. Fixes to pexp pretty printer. 2010-09-15 16:10:08 -07:00
Graydon Hoare
3350b17c60 Add pretty-printing for pexps. 2010-09-15 14:36:40 -07:00
Graydon Hoare
77beffc889 Add some form-judgements on plvals and pexps. 2010-09-15 12:29:45 -07:00
Graydon Hoare
c61d021f6d Commence moving pexp into ast, for eventual merger with expr. 2010-09-14 18:59:14 -07:00
Graydon Hoare
b504b3f8d5 Begin actually folding constant items into operands at site of use. 2010-09-14 15:34:01 -07:00
Graydon Hoare
6cfeac162d Translate const uses via runtime expression evaluation. 2010-09-14 11:44:25 -07:00
Graydon Hoare
a4a0c6ad1e XFAIL const test on LLVM, of course. 2010-09-14 11:13:24 -07:00
Graydon Hoare
7287d3aaa0 Teach front-end about simple, first-cut version of const items. 2010-09-14 10:52:32 -07:00
Graydon Hoare
bc646d01c5 Fix leaking arg slots on tail calls. Closes #160. 2010-09-13 13:37:24 -07:00
Graydon Hoare
67aa39e1ef Fix a leak when box types are used via type descriptors. 2010-09-12 01:05:56 -07:00
Michael Bebenita
a493350eb5 Cleanup, refactoring, and some runtime tests. 2010-09-10 14:38:31 -07:00
Michael Bebenita
f985fded3e Added lock_and_signal::signal_all(), and made the rust_kernel::join() use wait instead of yield. 2010-09-10 14:38:31 -07:00
Graydon Hoare
79dc07d648 Use hashtable rather than bitset for vreg constraints in ra; speeds compilation. 2010-09-09 18:56:51 -07:00
Graydon Hoare
a9e2327a18 Switch tags to purely nominal, removing TY_iso and TY_idx. Seems to mostly work, possibly a little bumpy. Changes a lot. 2010-09-09 15:59:29 -07:00
Michael Bebenita
c877f31730 Fixed lost signal notifications. 2010-09-08 22:20:31 -07:00
Michael Bebenita
743ca289b6 Cache task handles. 2010-09-08 21:25:16 -07:00
Graydon Hoare
616b7afb72 Tidy up the sync dir, remove dead or mis-designed code in favour of OS primitives, switch rust_kernel to use a lock/signal pair and wait rather than spin. 2010-09-08 19:13:49 -07:00
Graydon Hoare
13d6f87431 XFAIL many.rs since it crashes on win32, and add a time-slice sleep to the kernel message loop to get tests to finish in a sane time. 2010-09-08 15:48:18 -07:00
Patrick Walton
2172a3bcf4 First lame stab at solving the diamond import problem 2010-09-08 15:38:39 -07:00
Michael Bebenita
388f8ce520 Cleaned up locking in the kernel. 2010-09-08 15:17:09 -07:00
Graydon Hoare
37cc139607 XFAIL task-comm-8, see if this helps burning-tree. 2010-09-08 10:40:33 -07:00
Michael Bebenita
7f6d8b95bd Fixed race in the rust kernel. 2010-09-07 23:37:51 -07:00
Michael Bebenita
de611a3090 Lots of design changes around proxies and message passing. Made it so that domains can only talk to other domains via handles, and with the help of the rust_kernel. 2010-09-07 18:44:12 -07:00
Michael Bebenita
a6aebdaedd Started work on a framework for writing runtime tests, added some simple test cases. 2010-09-07 18:41:08 -07:00
Michael Bebenita
5375b39160 Small updates to util classes. 2010-09-07 18:41:08 -07:00
Michael Bebenita
b03812af2b Change signature of array_list::pop(). 2010-09-07 18:41:08 -07:00
Michael Bebenita
6b7ba50e17 Added "new" inline operators to memory regions. 2010-09-07 18:41:08 -07:00
Michael Bebenita
066c14009b Added a .cpp file for rust_proxy to help avoid .h file dependencies in the future. 2010-09-07 18:41:08 -07:00
Michael Bebenita
9b74129a4f Added a thread utility class to factor out operations on threads. 2010-09-07 18:41:07 -07:00
Michael Bebenita
9b8d647af3 Make run.py only search in the run-pass directory. 2010-09-07 18:41:07 -07:00
Michael Bebenita
79e3856d7d Small updates to test cases. 2010-09-07 18:41:07 -07:00
Michael Bebenita
f8ff013e3c Added a few utility classes, cleaned up the include order of .h files, and started to make the Rust kernel own domain message queues rather than the Rust domains themselves. 2010-09-07 18:41:07 -07:00
Patrick Walton
ffdb5fc858 Initial support for a global crate metadata cache 2010-09-07 16:35:21 -07:00
Roy Frostig
ca1475382e Add hashmap tests exercising strings as keys and values. No longer leaks on linux. 2010-09-07 01:21:18 -07:00
Roy Frostig
5e5112dac6 Recursively drop a type's parts if the type uses any typarams, since those typarams may represent types that actually require dropping. 2010-09-07 00:54:23 -07:00
Roy Frostig
cf62b54028 Add a little pointer-cast helper to dbg. 2010-09-06 23:24:01 -07:00
Roy Frostig
974092c526 Test multi-ref'ed vec growth more seriously than before. 2010-09-03 16:25:56 -07:00
Roy Frostig
4e355aebf7 When vec growth results in a newly allocated (extended) buffer, copy existing elements over via element-wise copy, not flat memcpy. Introduce new vec growth glue to achieve this. 2010-09-03 16:18:32 -07:00
Roy Frostig
1eb2a8b10b Assert to insure that the worst-case glue-call arg count is not exceeded unless allowed to. 2010-09-03 16:03:13 -07:00
Roy Frostig
1fa978ebb9 Fail a bit more informatively on a bad get_element_ptr_dyn. 2010-09-03 15:07:58 -07:00
Graydon Hoare
eb90be7798 Add session, span tracking, error reporting, beginning of a function to parse an item to rustc. 2010-09-01 13:24:14 -07:00
Graydon Hoare
b90e6b93c1 Whitespace churn. 2010-08-31 14:36:51 -07:00
Graydon Hoare
cfca901cfe Add block-comment support, various additional operators. Rustc can lex itself now. 2010-08-31 13:29:08 -07:00
Roy Frostig
47e86a05ae Fix rust_vec constructor assertion failure caused by slow path of upcall_vec_grow. Add testcase. 2010-08-31 13:01:57 -07:00
Graydon Hoare
11e747fc58 Er, this would be the hunk that actually failed to get committed last time. 2010-08-31 12:54:24 -07:00
Graydon Hoare
2f3201a64c Reinstate commit 9f0eaa6581 with sufficient fixes to hopefully not break tinderboxes. 2010-08-31 12:42:24 -07:00
Patrick Walton
615b1774a4 Turn native OCaml code generation on for the Mac 2010-08-27 18:06:16 -07:00
Roy Frostig
9481907211 Make pattern-alt drop the slots it initializes when binding slot patterns. Undoes most of the hackiness in 5e77e784f0 and replaces it with a more proper fix. 2010-08-27 17:30:26 -07:00
Patrick Walton
6ec8c21016 Revert "More work on lexer.rs: start using keyword hashtable, handle more lexemes." due to tinderbox bustage
This reverts commit 9f0eaa6581.
2010-08-27 17:29:56 -07:00
Graydon Hoare
9f0eaa6581 More work on lexer.rs: start using keyword hashtable, handle more lexemes. 2010-08-27 16:35:50 -07:00
Roy Frostig
0d15ae4f7a Modify alt-pattern-drop.rs to also insure the slot bound in the pattern doesn't also get dropped (again) at the end of the block containing the alt. 2010-08-27 13:48:45 -07:00
Roy Frostig
6f52ba7cc5 Whitespace shuffle in rustc's lexer to fit 78-column rule and put out burning tinderbox. 2010-08-27 13:36:18 -07:00
Roy Frostig
ecb7fc2038 Tiny change to tighten up alt-pattern-drop.rs test. 2010-08-27 13:29:53 -07:00
Roy Frostig
5e77e784f0 Have alt-pattern drop the slots it initializes when binding slot patterns. Add a testcase for this as well. 2010-08-27 13:29:53 -07:00
Graydon Hoare
1428b59a19 Modify rustboot to use lexer.reader. 2010-08-27 13:08:47 -07:00
Patrick Walton
88c9759347 Read definitions of tag types in the DWARF 2010-08-27 11:46:59 -07:00
Patrick Walton
1c0c242d0a Zero-length tuples can show up in tag types. Don't forbid them when reading in the DWARF. 2010-08-27 11:46:59 -07:00
Roy Frostig
927b2f7ef4 Comment out hashmap tests exercising maps with str as key or value type, as they appear to cause leaks. 2010-08-27 11:16:49 -07:00
Roy Frostig
4c1c8460f9 Add simple hashmap tests exercising maps with str as key type, value type, and both. 2010-08-27 11:01:51 -07:00
Roy Frostig
1035ad93dd Pinching myself for certainty. ;p 2010-08-26 20:02:07 -07:00
Roy Frostig
66b5b9567c Test the hashmap more, exercising hash collision, element removal, and a forced rehashing that actually causes elements to change buckets. In the process, find a bug in hashmap's remove() and fix it. 2010-08-26 19:44:38 -07:00
Roy Frostig
aa30304328 Simplify null-writing from commit 8559a85cca so as to avoid a branch. 2010-08-26 18:55:53 -07:00
Patrick Walton
07095a3ef9 Encode tag names in the DWARF 2010-08-26 17:48:52 -07:00
Graydon Hoare
7cfa7bdd23 Make vreg constrs per-quad, regfence on nontrivial constrs, back out workaround to _uint, add regression test. Closes #152. 2010-08-26 16:27:47 -07:00
Patrick Walton
a7eeeb596a Add automatic parameter instantiation. Closes #45. 2010-08-26 14:47:18 -07:00
Roy Frostig
8559a85cca When copying function values, null out the destination's binding iff the source's binding is null. 2010-08-26 14:44:11 -07:00
Graydon Hoare
ee04c0236c Add check to catch bug underlying issue #152. Fix will take longer. 2010-08-26 14:32:47 -07:00