Commit Graph

1158 Commits

Author SHA1 Message Date
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
Roy Frostig
c3c3e03649 un-XFAIL lib-map.rs now that rust stacks are large and it passes on linux. 2010-08-26 13:15:46 -07:00
Roy Frostig
5cf83dcc1a Test the hashmap for growth and rehashing. 2010-08-26 13:03:28 -07:00
Roy Frostig
c3c5e6c773 Workaround issue #152 in _uint.next_power_of_two 2010-08-26 11:57:48 -07:00
Patrick Walton
de5c6f111c Add a "param handler" to demand_fn for use in automatic type parameter instantiation 2010-08-26 11:22:00 -07:00
Patrick Walton
ff9ecc1128 Tiny style cleanup in a pattern match in type.ml 2010-08-26 11:20:55 -07:00
Patrick Walton
09417f81aa Typecheck function patterns 2010-08-25 18:36:49 -07:00
Roy Frostig
c40fed5804 Actually switch to using the bigger hashmap once a it finishes growing and rehashing. 2010-08-25 17:42:36 -07:00
Roy Frostig
6b053f24c7 Insure bools remain 0x1 or 0x0 by having boolean-NOT not just be a simple bit-NOT. 2010-08-25 17:17:14 -07:00
Graydon Hoare
2c8ae5ca8d Add element to closure to hold captured tydesc (not body tydesc). 2010-08-25 16:36:18 -07:00
Graydon Hoare
91d640f90f Merge obj-drop and closure-drop code, handles freeing bound exteriors now. 2010-08-25 16:21:50 -07:00
Graydon Hoare
8e0f486ea6 First pass of updating the in-memory layout of closures, for issue 81. 2010-08-25 14:42:28 -07:00
Graydon Hoare
c2b6c27d65 Fix edge case in uint->string conversion. 2010-08-25 13:54:27 -07:00
Graydon Hoare
b2b72a08db Janitorial work on obj box / body / field terminology, following froystig's brave lead. 2010-08-25 12:08:05 -07:00
Graydon Hoare
af6e1d2c2b Fix ghastly typestate bug breaking nested functions. 2010-08-25 12:08:05 -07:00
Patrick Walton
a48c382549 Introduce "type patterns" to the typechecker in preparation for function type-param inference 2010-08-25 11:16:29 -07:00
Roy Frostig
2b9a48b9c9 Obj ctors are not obj fns so translate their frame entry as such. 2010-08-25 10:27:17 -07:00
Michael Bebenita
3ab8cc6018 Fixed the location of the failing XFailed test. 2010-08-24 21:27:47 -07:00
Michael Bebenita
64ff82ecf9 Implemented an lock free queue based on this paper http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf, the "lock free queue" we had before wasn't lock free at all. 2010-08-24 21:07:14 -07:00
Roy Frostig
d9fe885ba5 Comment on env var required for std.dbg to do any logging. 2010-08-24 19:55:45 -07:00
Roy Frostig
7ccdb88374 Add support in dbg.debug_obj for printing the obj body. 2010-08-24 19:49:39 -07:00
Roy Frostig
d9e3fb2c5d Add std.dbg module for inspecting rust values in memory. 2010-08-24 18:37:42 -07:00
Graydon Hoare
2dc3a37f93 First successful hashmap lookups. Yay. 2010-08-24 17:38:04 -07:00
Graydon Hoare
e846643d23 Fix mod-bug in std.map, work around bug in closure typaram capture, enable insert-tests in lib-map.rs. 2010-08-24 17:23:09 -07:00
Graydon Hoare
9ea37bd47b Fix residual nonsense of storing crate-rel displacements in a closure pair (made it impossible to pass between crates, of course). 2010-08-24 17:09:03 -07:00
Patrick Walton
1b117f936d Remove obsolete TODO about checking for return statements 2010-08-24 16:11:43 -07:00
Graydon Hoare
de6535c1c2 Elide preempt check on thunk and ctor frames. Wins 8kb on rustc. 2010-08-24 11:57:51 -07:00
Graydon Hoare
8d787d1e08 Avoid emitting unnecessary frame glue. Wins a couple hundred kb of rustc. 2010-08-24 11:45:48 -07:00
Graydon Hoare
87c9a9e25d Avoid iterating ty parts on drop when there are no heap pointers in ty. Wins several tens of kb on rustc. 2010-08-24 11:44:14 -07:00
Graydon Hoare
b5255b4534 Shrink size of glue calls. Wins a few tens of kb on rustc. 2010-08-24 11:42:24 -07:00
Graydon Hoare
07d355d1af Add lexer.reader to rustc for tracking position, char conversion, holding keyword tables. 2010-08-24 09:59:41 -07:00
Graydon Hoare
47501f1659 Make _str.eq suitable for map.hashmap; add _str.hash that does simple djb-hash. 2010-08-24 09:59:02 -07:00
Graydon Hoare
10316fbfa5 Make error reporting slightly more regular. 2010-08-24 09:58:26 -07:00
Graydon Hoare
14262c7311 Rename lib tests, enable lib-int.rs using _str.eq for now. 2010-08-24 09:09:04 -07:00
Graydon Hoare
ca3ca041f3 Add very basic char / str literal handling to rustc lexer. 2010-08-24 08:56:42 -07:00
Graydon Hoare
df3ea680ea Tidy lexer. 2010-08-24 08:50:56 -07:00
Graydon Hoare
2745a5ebb2 Handle line-comments and a few more symbols in rustc lexer. 2010-08-23 19:17:04 -07:00
Graydon Hoare
6e3a77c3a3 Merge remote branch 'tohava/master'
Conflicts:
	src/boot/fe/ast.ml
2010-08-23 18:19:42 -07:00
Patrick Walton
ed92925083 Warn when the value of "spawn" is unused, as it's useless 2010-08-20 17:15:27 -07:00
Or Brostovski
0830b5bf24 Modified parser to handle alt type andadded a few tests
ast.ml - modified arm types for easier polymorphism
       - fixed a bug in fmt_type_arm
dead.ml - modified arm types for easier polymorphism
common.ml - added 'either'
          - added some useful auxiliary functions
item.ml - modified arm code to be more polymorphic and handle both alt-tag and alt-type, also fixed the problematic case in bad-alt.rs
Makefile - added XFAIL for new alt-type test
bad-alt.rs - added test for invalid alt syntax
alt-type-simple.rs - added simple test for alt type
2010-08-21 02:41:43 +03:00
Graydon Hoare
c0e173e19a Stringify op tokens. 2010-08-20 15:57:59 -07:00
Graydon Hoare
a2bd79a6ac Redo _uint.to_str to work with chars and only one tmp str, built left-to-right. 2010-08-20 15:37:20 -07:00
Graydon Hoare
db377bae3a Accumulate number tokens properly, handle newline, EQ and EQEQ in rustc lexer. 2010-08-20 15:36:48 -07:00
Patrick Walton
08f191d6d9 Lex commas too in the self-hosted compiler 2010-08-20 14:58:15 -07:00
Patrick Walton
fc05ea0371 Use pattern matching for the one-byte structural symbols in the self-hosted compiler 2010-08-20 14:35:59 -07:00
Roy Frostig
8097a10c36 XFAIL _io test because darwin and winnt are burning. 2010-08-20 13:29:19 -07:00
Roy Frostig
2da4fecacd Test the buffered reader and writer in _io. 2010-08-20 12:57:38 -07:00
Roy Frostig
af64e4f305 Allow every test to make a .tmp file that is cleaned up before execution. 2010-08-20 12:48:45 -07:00
Graydon Hoare
eecd1f47d7 Fix some lexer bugs in rustc. Beginning to lex stuff now. 2010-08-20 12:12:37 -07:00
Graydon Hoare
1db0cb208d Add ungetc and re-indent _io.rs. 2010-08-20 12:12:11 -07:00
Graydon Hoare
34e5e98cf7 Re-XFAIL destructor-ordering.rs. Valgrind doesn't like it (though oddly, doesn't make the tbox burn). 2010-08-20 11:48:31 -07:00
Graydon Hoare
0f224f977d Expand rustc lexer to do almost-nearly-nontrivial stuff. 2010-08-20 11:42:44 -07:00
Graydon Hoare
9fc4fc6692 Add _uint module to std, move some code around. 2010-08-20 11:42:44 -07:00
Graydon Hoare
5f9750ca2c Modify session to report errors in an emacs-parser-friendlier way. 2010-08-20 11:42:44 -07:00
Patrick Walton
4c28d9a54a Un-XFAIL some tests that (seem to) rely on large task stacks 2010-08-20 11:11:39 -07:00
Patrick Walton
fac28ad42f Disable task-growing logic for now until #151 is fixed 2010-08-20 11:05:06 -07:00
Graydon Hoare
9363c1ab7f Use str += u8 in rustc lexer. 2010-08-20 10:03:31 -07:00
Graydon Hoare
ddd8feea31 Support single-element append on vec, str. Closes #44. 2010-08-20 09:58:22 -07:00
Graydon Hoare
40fccac7fb Add some code to lexer in rustc. 2010-08-19 18:42:32 -07:00
Graydon Hoare
b34cb1b631 Fix a bunch of typestate bugs in handling if and while statement wirings. 2010-08-19 18:42:32 -07:00
Roy Frostig
4a7aa75b5d Make _io.buf_reader read more than 0 bytes at a time. 2010-08-19 17:37:22 -07:00
Patrick Walton
b6b348a13c Export all item code to stabs on Windows (including e.g. object methods) 2010-08-19 16:50:18 -07:00
Patrick Walton
31aceda09e Export glue as stabs on Windows as well 2010-08-19 16:15:37 -07:00
Patrick Walton
09ebda7ce5 Add some mangled stabs to help debugging on Windows 2010-08-19 15:38:57 -07:00
Patrick Walton
cd6be20caa Use "/usr/bin/env python" per the prevailing style 2010-08-19 10:25:58 -07:00
Patrick Walton
64be30936b Don't complain about \r when core.autocrlf is on in Git... and work in Python 2.4, 2.6, and 3.x. 2010-08-18 16:14:44 -07:00
Patrick Walton
1d10582d62 Revert "Don't complain about \r when core.autocrlf is on in Git"
This reverts commit 828afaa2fa.
2010-08-18 16:04:50 -07:00
Graydon Hoare
4727532e95 Simplify lexer/parser structure to use stdio_reader. 2010-08-18 15:41:24 -07:00
Graydon Hoare
f0d4e6c511 Add stdio_reader to io, just use FILE* values for now. We have things to do. 2010-08-18 15:41:24 -07:00
Patrick Walton
b4f92774d0 Don't complain about \r when core.autocrlf is on in Git (now working with Python 2.6). 2010-08-18 15:30:31 -07:00
Patrick Walton
724d7235e5 Revert "Don't complain about \r when core.autocrlf is on in Git"
This reverts commit 828afaa2fa.
2010-08-18 15:24:44 -07:00
Patrick Walton
828afaa2fa Don't complain about \r when core.autocrlf is on in Git 2010-08-18 15:19:36 -07:00
Patrick Walton
61156ea714 Fail during build if we can't determine the current Git revision 2010-08-18 12:57:23 -07:00
Graydon Hoare
51412cb5fa Add do-nothing obj type for lexer to rustc. 2010-08-18 11:35:34 -07:00
Graydon Hoare
a1b57e69cd Add mod token to rustc. 2010-08-18 11:35:12 -07:00
Graydon Hoare
49f668dff3 Add mod common to rustc. 2010-08-18 11:34:47 -07:00
Graydon Hoare
b5ad78f316 Change indent on rustc.rc. 2010-08-18 11:34:22 -07:00
Graydon Hoare
102ec16877 Flesh out the ast module in rustc a little. 2010-08-18 09:00:10 -07:00
Graydon Hoare
9db70bfc42 Add test code that exercises LLVM in rustc. Works. 2010-08-18 00:19:45 -07:00
Graydon Hoare
3f2c39b3d8 Fix symbol names on LLVM C library binding and library-name for LLVM. 2010-08-18 00:19:25 -07:00
Graydon Hoare
9277f551d3 Add support for casting native types. 2010-08-18 00:18:46 -07:00
Michael Bebenita
a4b8c74f9f Added simple deadlock detection in the scheduler. 2010-08-17 23:49:57 -07:00
Michael Bebenita
2c1ec6771b Lots of changes around memory managment in the Runtime. Added memory regions and fixed race caused by calling rust_srv::malloc() from multiple threads when sending messages. 2010-08-17 23:49:57 -07:00
Michael Bebenita
9fa2b53d8c Add a "special" rust_log flag to be used for debugging in cases where the full log output prevents races from occurring. 2010-08-17 23:49:57 -07:00
Michael Bebenita
e20752de68 Added labels to blocking conditions. 2010-08-17 23:49:57 -07:00
Michael Bebenita
7ff39ea448 Fixed deadlock by removing channel flushing. 2010-08-17 23:49:57 -07:00
Michael Bebenita
6e9f0f952d Made the lock_free_queue lock (temporarily, until fixed). 2010-08-17 23:49:57 -07:00
Michael Bebenita
028702a798 Updates to run.py. You can now pass in the rust_log and a flag to terminate on the first failure. 2010-08-17 23:49:57 -07:00
Graydon Hoare
766b91d88b Add support for a reserved-words list and reserve the various not-supported-but-plausible IEEE datatypes. 2010-08-17 14:48:00 -07:00
Michael Bebenita
560d7b4983 Re-xfailed tests because Windows is still complaining. 2010-08-16 23:28:01 -07:00
Michael Bebenita
5d98a311e4 Putting out the burning tree on Windows. Turns out you can completely starve threads by not yielding on windows/vmware, really weird. 2010-08-16 18:44:26 -07:00
Michael Bebenita
14f5b5750d Un-xfailed working tests. 2010-08-16 15:05:57 -07:00
Michael Bebenita
b40a9fa787 Pulled rust_srv in its own file. Some cleanup, and added varargs to assertion macros. 2010-08-16 15:05:57 -07:00
Graydon Hoare
7e62aa6801 Absent any deep overhauls to syntax or constant-handling, hack in the ability to project a cexp var binding to a token in the parser. Use it in comp/rustc.rc and comp/lib/llvm.rs. 2010-08-16 13:02:46 -07:00
Patrick Walton
176899a970 Evil solution to the problem of importing the same opaque from two different files. Closes #145. 2010-08-13 16:33:04 -07:00
Roy Frostig
abe307cf45 Uncomment recently-no-longer-failing std.deque tests. Add a few arbitrary-access checks. 2010-08-13 11:55:25 -07:00
Roy Frostig
73ee16b1a4 A little tidy-up that should have gone in with 4e376852e7. 2010-08-12 19:20:29 -07:00
Graydon Hoare
8149bb1411 Zero LMA/VMA of debug sections in elf. Closes #148. 2010-08-12 18:45:41 -07:00
Roy Frostig
4e376852e7 Fix max_sz bug that ended up causing us to index incorrectly into a vec of tag types. Add a testcase. 2010-08-12 16:21:08 -07:00
Roy Frostig
6bce296d9f Address FIXME in _vec waiting on closed issue #108. 2010-08-12 13:18:10 -07:00
Roy Frostig
445d3fe39c Add vec debugging utility to _vec module. 2010-08-12 13:11:49 -07:00
Graydon Hoare
5267b77d3b Add more LLVM library bindings to rustc. 2010-08-12 12:10:36 -07:00
Graydon Hoare
bc0d1fbae5 Add modelines and related emacs chatter to rustc. 2010-08-12 10:29:23 -07:00
Graydon Hoare
c599b32646 Kill old parser support for type-parametric modules. We don't support those. 2010-08-12 10:28:23 -07:00
Graydon Hoare
5297582ba2 Add mostly-empty AST module to rustc. 2010-08-12 10:27:50 -07:00
Michael Bebenita
988695a96c Added support for task sleeping in the scheduler. 2010-08-11 21:24:04 -07:00
Graydon Hoare
88d9a79ac8 Some ELF correctness issues, but apparently none enough to placate gdb. 2010-08-11 16:57:34 -07:00
Roy Frostig
22719e45b8 Remove commented-out code that slipped in during last commit. 2010-08-11 16:10:44 -07:00
Michael Bebenita
74e12fcef6 Ignore upcall_flush for channels that are disassociated from ports. This makes task-comm-10 break a little less hard, but it still leaks because messages pending in the channel are never freed. 2010-08-11 16:08:45 -07:00
Michael Bebenita
c56ecc1d56 Added a -v(algrind) option to run.py. 2010-08-11 16:08:45 -07:00
Michael Bebenita
18beb7a33d Increment ref counts of objects sent along channels. 2010-08-11 16:08:45 -07:00
Michael Bebenita
8ac15c6844 Added test cases. 2010-08-11 16:08:45 -07:00
Michael Bebenita
d584de7a37 Made ref_count a word sized value. 2010-08-11 16:08:45 -07:00
Michael Bebenita
ff93e5e196 Print domain and task names in log prefix. 2010-08-11 16:08:45 -07:00
Roy Frostig
f307688bf4 Add native vec[u8] to str converter. Put in workaround for leak in str to vec[u8] converter. Add testcase exercising both. Drive-by fix a potential array-out-of-bounds write on rust_str buffers. 2010-08-11 16:06:45 -07:00
Roy Frostig
8e02a2bcb5 Fix reverse-indexing bug in _vec.init_fn. 2010-08-11 15:56:19 -07:00
Graydon Hoare
9faaf9eaf4 Tidy up run script. 2010-08-11 14:28:01 -07:00
Graydon Hoare
bf341f829b Change dwarf output on linux to switch from relative to absolute addresses based on library-mode-ness, might help fight ASLR-induced confusion. 2010-08-11 14:27:47 -07:00
Graydon Hoare
60e5ad384e Put out burning tinderbox on OSX. 2010-08-10 16:49:36 -07:00
Graydon Hoare
5d2e94838e un-XFAIL lib-deque.rs, as it seems to have been waiting on something recently fixed. 2010-08-10 16:35:40 -07:00
Graydon Hoare
9f6dec9e13 Always bounce mul/div/mod ops. Closes #131 harder. 2010-08-10 16:03:58 -07:00
Graydon Hoare
5b5bcf9cfb Merge commit 'tohava/master'
Conflicts:
	src/boot/fe/ast.ml
2010-08-10 14:46:24 -07:00
Graydon Hoare
dbe8760af3 Merge commit 'jyasskin/work'
Conflicts:
	src/rt/rust_dom.cpp
	src/rt/rust_upcall.cpp
2010-08-10 13:26:00 -07:00
Roy Frostig
75e46cc4d0 Fix a deque size bookkeeping bug. 2010-08-10 11:40:33 -07:00
Roy Frostig
fd0750b218 Get object's captured typarams when querying for an object method's typarams in Trans. Together with commit 982dcc29bf this... Closes #138. 2010-08-09 19:19:32 -07:00
Roy Frostig
982dcc29bf Get object's captured typarams when calculating sizes in the backend's fn-prologue-generation for object methods. 2010-08-09 15:45:08 -07:00
Michael Bebenita
76e03be459 XFailed some tests. 2010-08-09 08:49:54 -07:00
Michael Bebenita
97d6342bf0 Synthesize a flush_chan upcall right before a channel's ref_count drops to zero. This should only happen in the Rust code and not in the drop glue, or on the unwind path. This change allows the task owning the channel to block on a flush and delete its own channel. This change also cleans up some code around rust_port and rust_chan. 2010-08-09 08:15:34 -07:00
Michael Bebenita
5917ca3519 Fixed deadlock in the scheduler caused by condition variables. 2010-08-09 08:06:08 -07:00
Michael Bebenita
4641fcef61 Added peek() to ptr_vec. 2010-08-09 08:01:40 -07:00
Michael Bebenita
f65c885c83 Made ref_count signed to help detect negative ref_count bugs. 2010-08-09 08:00:04 -07:00
Michael Bebenita
30734a9a7b Some pretty printing in the runtime. 2010-08-09 07:52:07 -07:00
Michael Bebenita
9ff6a3d031 Added class to abstract away platform specific thread primitives. 2010-08-09 07:42:06 -07:00
Michael Bebenita
56cd4e458a Made the runtime keep track of all live domains and print their state. 2010-08-09 07:34:11 -07:00
Michael Bebenita
c5744c8aef Added the RUST_SEED env variable to seed the Rust task scheduler -- helpful when debugging task race conditions within a single thread domain. 2010-08-09 07:30:48 -07:00
Michael Bebenita
768adb3ddd Added a python script to run test cases repeatedly. This helps with debugging race conditions. 2010-08-09 07:27:39 -07:00
Michael Bebenita
0e422c748b Added "none" option to rust_log env string to disable all log output. 2010-08-09 07:07:00 -07:00
Michael Bebenita
d2c2fbe7ca Added timed_wait to condition variables. 2010-08-09 07:04:38 -07:00
Michael Bebenita
8395d46163 Changed seemingly incorrect stk_field_valgrind_id. 2010-08-09 07:01:20 -07:00
Michael Bebenita
76ba8f1d84 Changed array_list::replace() return behavior. 2010-08-09 06:59:46 -07:00
Michael Bebenita
d647c163fd Updated/added test cases. 2010-08-09 06:53:37 -07:00
Jeffrey Yasskin
b71340552f Add names to tasks and domains. These can either be an explicit literal string
after the "spawn" keyword, or implicitly the call expression used to start the
spawn.
2010-08-09 11:43:16 +02:00
Jeffrey Yasskin
df75a968c5 Fix LLVM translation of modules. 2010-08-08 14:29:53 -07:00
Or Brostovski
4467d7683d Merge branch 'master' of git://github.com/graydon/rust
Conflicts:
	src/boot/fe/ast.ml
2010-08-07 16:43:08 +03:00
Or Brostovski
b1c86beea8 Added AST pretty printing for communication alt statement, closes issue 19. 2010-08-07 13:44:44 +03:00
Or Brostovski
459e860457 Added forgotten handling for alt_type_else, and also for stmt_note 2010-08-06 17:34:31 -07:00
Or Brostovski
122ea68b12 Added AST pretty printing for slice expression 2010-08-06 17:34:31 -07:00
Or Brostovski
a0cc4817e9 Added AST logging, and modified AST for consistent handling of alt stmts.
- Modified the arm types, instead of a single arm type, there are now 2 (soon to be 3) arm types, one for each type of alt statement
- Added AST logging for constrained type (see fmt_constrained)
- Added AST logging for STMT_alt_type
- Created a generic fmt_arm for use with all alt statements
2010-08-06 17:34:31 -07:00
Jeffrey Yasskin
3f6e8ffe64 Implement _str.len() to return the number of bytes, rename it to byte_len(),
and add a test.
2010-08-06 17:29:21 -07:00
Jeffrey Yasskin
581a95a804 Add an int->str conversion function.
The test currently fails because string equality isn't implemented.
2010-08-06 17:25:27 -07:00
Jeffrey Yasskin
987589e946 Change the destructor-ordering test to use channels instead of a shared mutable object.
This test used to take advantage of a hole in the type system that allows
objects with destructors to refer to stateful objects.
2010-08-06 17:17:04 -07:00
Jeffrey Yasskin
fdb842f9e6 Fix LLVM translation of modules. 2010-08-06 17:14:59 -07:00
Roy Frostig
80a1cd3d1e Redo yesterday's buf_writer-wrapper in a less silly and convoluted way. Add integer stringifying functions to _int module. 2010-08-06 15:48:23 -07:00
Roy Frostig
514fb4b321 Accept uint literals as literal patterns. 2010-08-06 15:44:09 -07:00
Tohava
7d38caf9c3 Added forgotten handling for alt_type_else, and also for stmt_note 2010-08-06 17:15:55 +03:00
Tohava
4bc173fd3c Added AST pretty printing for slice expression 2010-08-06 16:11:15 +03:00
Graydon Hoare
db561b52ff Degrade emitter size cache to just a flat hashtable with regular flushes (sigh) and re-introduce horrible bounce-off-spill hack for DIV, MUL, etc. 2010-08-05 17:44:35 -07:00
Graydon Hoare
9da8101cc8 Something is wrong with the emitter size cache; disable for now, possibly put out flaming tinderboxes. 2010-08-05 13:28:43 -07:00
Patrick Walton
53b01dc006 Add a valgrind suppression for Snow Leopard dyld 2010-08-05 12:00:34 -07:00
Graydon Hoare
935b4347e2 Mop up workarounds in stdlib no longer required as issue #93 is closed. 2010-08-05 10:10:39 -07:00
Graydon Hoare
29987b56e1 Move 'as' precedence up to just above relational; support indexing str and vec by all integral types. Closes #94. 2010-08-05 10:04:11 -07:00
Roy Frostig
718c0b5963 Add to std._io some formatter/type-specific-writer mechanism. Make a few type-specific buffered writers as wrappers of buf_writer. 2010-08-04 23:09:33 -07:00
Tohava
ce79b0e492 Merge branch 'master' of git://github.com/graydon/rust 2010-08-05 04:19:46 +03:00
Graydon Hoare
6e98a3b64f Thread argument-types down to internal_check_outer_lval in type.ml, in preparation for trying to infer type params from call args. 2010-08-04 17:50:57 -07:00
Tohava
0f53d03139 Added AST logging, and modified AST for consistent handling of alt stmts.
- Modified the arm types, instead of a single arm type, there are now 2 (soon to be 3) arm types, one for each type of alt statement
- Added AST logging for constrained type (see fmt_constrained)
- Added AST logging for STMT_alt_type
- Created a generic fmt_arm for use with all alt statements
2010-08-05 03:44:29 +03:00
Roy Frostig
c17ea956a2 Add per-platform file-open flags to std.os. Open buffers as desired in std._io. 2010-08-04 17:14:17 -07:00
Graydon Hoare
cbe68d4ccb Add a CHECK_XFAILS target that inverts the sense of check: it tries to compile and run the tests marked as XFAILs. 2010-08-04 15:29:59 -07:00
Graydon Hoare
815424c2ec Fix pexp parser to do left-associativity, not right. Closes #130. 2010-08-04 13:44:22 -07:00
Roy Frostig
1a8d609e89 Add a buffered writer to stdlib _io module. 2010-08-04 12:59:48 -07:00
Roy Frostig
b9075c23c0 Address _io.new_buf FIXME now that issue #93 is closed. 2010-08-04 11:24:09 -07:00
Graydon Hoare
ac4c5ae19b Bah. xfail arithmetic-interference for now; linux tinderbox is burning on it and it's late. 2010-08-04 00:37:25 -07:00
Graydon Hoare
7595aca5e3 Kill the preallocator, install a sane replacement. Closes #131. And probably a lot of others. 2010-08-04 00:27:36 -07:00
Graydon Hoare
22c0776247 Merge branch 'master' of git@github.com:graydon/rust 2010-08-03 19:02:09 -07:00
Graydon Hoare
d1a67574c6 Factor append_quad out of IL.emit_full, for use elsewhere. 2010-08-03 18:59:26 -07:00
Roy Frostig
299657550e Have hashmap's insert method overwrite on existing-key insertion and return true iff overwrite did not occur. 2010-08-03 18:57:54 -07:00
Graydon Hoare
c014748c01 Remove dead implicit-destinations logic from IL. 2010-08-03 18:52:49 -07:00
Roy Frostig
6277b462e9 More stdlib hashmap work. Add a simple test and XFAIL it due to a valgrind-spotted UMR. 2010-08-03 18:43:57 -07:00
Roy Frostig
5b2451c231 Address _vec.map allocation FIXME. Add test. 2010-08-03 18:18:19 -07:00
Roy Frostig
5796ebb1e7 Address _vec.grow FIXME, as issue #89 has been closed. 2010-08-03 18:10:18 -07:00
Roy Frostig
d5fd81174e Pass parametric types by-alias in various stdlib spots. 2010-08-03 18:06:31 -07:00
Roy Frostig
085790a73a More stdlib hashmap bits (plus some drive-by extras). 2010-08-03 17:52:35 -07:00
Roy Frostig
7b91933eed Avoid mem cmp mem in trans even though it's an X86ism becase we don't always catch it later on. 2010-08-03 17:42:22 -07:00
Graydon Hoare
a1ecdb103d Fix some naughtiness of handling newlines in bracequotes and multi-line comments. Closes #142. 2010-08-03 16:28:50 -07:00
Graydon Hoare
1fc4e9fcc6 Add tests and fix pexp bug. Closes #141. 2010-08-03 12:20:29 -07:00
Patrick Walton
559e1e7e01 Use a better heuristic to determine whether we're on a Mac, issue 69 2010-08-02 13:26:35 -07:00
Graydon Hoare
e85f6ca4d3 Patch up another place where the newly-expanded 'closure-ptr' implicit arg needs to be passed. Amazingly, it mostly-worked without this. On some platforms. 2010-07-30 19:14:42 -07:00
Graydon Hoare
c7714b86ea XFAIL all task-related tests for now; yesterday's work on notification proxies broke inter-task shutdown. 2010-07-29 12:47:37 -07:00
Graydon Hoare
0b9c882d66 Log join-wait count under rust_log::TASK bits, not ::ALL. 2010-07-29 10:41:22 -07:00
Michael Bebenita
74a79fff3a Add a bunch of comm tests. 2010-07-28 20:30:30 -07:00
Michael Bebenita
fa70212c86 Log dead tasks when dom is just waiting for refcounts to drop. 2010-07-28 20:30:29 -07:00
Michael Bebenita
a5b7a5202c Note that we keep running the main loop until all task refcounts are zero. 2010-07-28 20:30:29 -07:00
Michael Bebenita
e1264ac59c Add some missing headers to the Makefile's RUNTIME_HDR list. 2010-07-28 20:30:29 -07:00
Michael Bebenita
4246d567b7 Move ports out into their own file, add data_message and make communication system use it (and proxies) instead of existing token scheme. 2010-07-28 20:30:29 -07:00
Michael Bebenita
4ff8e15128 Move notification-messages out into their own file and unify into notify_message, make them use proxies, cache task proxies in dom. 2010-07-28 20:30:29 -07:00
Michael Bebenita
defd8a66ea Rename rust_proxy_delegate to maybe_proxy, flesh out logic in it. Add strong-ref distinction on rust_proxy. 2010-07-28 20:30:29 -07:00
Michael Bebenita
30b3f8a117 Add rust_dom::log_state, for logging the running/blocked/dead vectors per scheduling iteration. 2010-07-28 20:30:29 -07:00
Michael Bebenita
5db5eb0c55 Null rust_task::cond on wakeup, add asserts and logging to block/wakeup. 2010-07-28 20:30:29 -07:00
Michael Bebenita
e327aa5093 Teach task_owned and dom_owned to find their dom via consistent interface. 2010-07-28 20:30:29 -07:00
Michael Bebenita
9fe4b0d404 Add modeline / file-local emacs var blocks. 2010-07-28 20:30:29 -07:00
Michael Bebenita
6c0ce25dbf Move rust_cond. 2010-07-28 20:30:29 -07:00
Michael Bebenita
06b52b70db Fix typos in comments, delete obsolete comments and dead commented code. 2010-07-28 20:30:29 -07:00
Michael Bebenita
cc4906ba79 Wrap long lines. 2010-07-28 20:30:29 -07:00
Michael Bebenita
436efdcb4f Add C++ wrapper around uthash. 2010-07-28 20:30:29 -07:00
Michael Bebenita
dbcc9b36b1 Let circular buffers actually grow to max sz, reset _next when resizing. 2010-07-28 20:30:29 -07:00
Michael Bebenita
c1795a1046 Change unread-on-destroy condition for circular buffer to merely a warning. 2010-07-28 20:30:29 -07:00
Michael Bebenita
c5e0ea7276 Add comment explaining NULL case in circular_buffer::enqueue and add logging to ::dequeue. 2010-07-28 20:30:29 -07:00
Michael Bebenita
d6cba83322 Add peek method to circular buffer. 2010-07-28 20:30:29 -07:00
Michael Bebenita
17fa6bfd9a Change _unit_sz to unit_sz and make public in circular_buffer. 2010-07-28 20:30:28 -07:00
Michael Bebenita
60b0486c11 Make circular buffer use only power-of-two sizes, cheaper arithmetic. 2010-07-28 20:30:28 -07:00
Michael Bebenita
d786469785 Add a warning interface to rust_srv. 2010-07-28 20:30:28 -07:00
Michael Bebenita
6afb6c767e Move allocation-tracking into rust_srv. 2010-07-28 20:30:28 -07:00
Michael Bebenita
712249d6b8 Log a separator when logging switches between threads. 2010-07-28 20:30:28 -07:00
Michael Bebenita
7ead107290 array_list improvements. 2010-07-28 20:30:28 -07:00
Roy Frostig
dfcf21ca82 Another deque test commented out. 2010-07-28 18:14:33 -07:00
Roy Frostig
3c22e79b77 Burn the mac and win trees less. Deque test is XFAILed, despite doing fine on Linux. 2010-07-28 17:50:07 -07:00
Roy Frostig
c489af8e1a Test the deque some more. 2010-07-28 17:31:41 -07:00
Roy Frostig
237b9d4a64 Test the deque more and fix uncovered off-by-one bug. 2010-07-28 16:34:22 -07:00
Roy Frostig
f282c5ccc0 Get slots in trans_tag using Semant tables. Closes #133. 2010-07-28 15:04:58 -07:00
Roy Frostig
a9ad2e98e3 Refer to issue #136 at the offending source point. 2010-07-28 14:11:56 -07:00
Roy Frostig
596d19e2ea Test the deque a bit. Give it a get-by-index method. Fix two uncovered state-calculation bugs --- one decently, the other with an ugly hack. Bug on the latter coming right up. 2010-07-28 14:00:44 -07:00
Graydon Hoare
8030757624 Switch machine-type lexemes to use suffixes. Remove support for foo(bar) as a cast notation. Closes #129. 2010-07-27 19:21:51 -07:00
Graydon Hoare
6662aeb779 Calm some LLVM indigestion of last change. 2010-07-27 17:23:41 -07:00
Graydon Hoare
4d31cf1dc5 Distill semantics of use-def maps to fewer and more-obvious words.
- Remove redundant uses of 'resolve' and 'referent' in semant.
- Use defn, defn_id, lval, lval_base more consistently.
- Make associated query functions more consistent.
- Closes #127.
2010-07-27 11:19:43 -07:00
Graydon Hoare
b7d7f70d09 Slight shaving on RA, no more optimizing today. It's fast enough for now. 2010-07-26 16:55:54 -07:00
Roy Frostig
1a61fb8eb7 Adjust testcase to cover issue #91, which was actually fixed back in commit f02f9cbf29. Closes #91. 2010-07-26 15:52:59 -07:00
Graydon Hoare
3d69407b51 Fix numerous non-linearities and O(sizeof(crate)) issues in typestate system's dataflow algorithm. No longer substantial in profile. 2010-07-26 15:44:29 -07:00
Patrick Walton
4b97b4e79d Move the test suite to the "as" form for casts. XFAIL a few tests for LLVM. 2010-07-26 15:22:21 -07:00
Graydon Hoare
ec5efd2577 Note the typestate dataflow timing. The culprit is revealed. 2010-07-26 12:31:43 -07:00
Graydon Hoare
c4897f849c Add a cumulative timer count to be sure we're getting everything. 2010-07-26 12:31:08 -07:00
Graydon Hoare
1b41d7be1a Change ctxt_crate_main to an Ast.name. 2010-07-26 12:30:43 -07:00
Graydon Hoare
025b1e4133 Do some more iflog-guarding. 2010-07-26 12:30:02 -07:00
Roy Frostig
085cd2ee7d vec_alloc takes four arguments these days, not three. 2010-07-25 22:21:07 -07:00
Roy Frostig
beca62e2e3 Attempt 2. This time actually reading my own diffs before committing. 2010-07-25 22:07:21 -07:00
Roy Frostig
b9f82d85f9 Attempt number 1 at extinguishing the windows tree remotely (apologies to those hacking on Sunday evening PST). 2010-07-25 22:05:39 -07:00
Roy Frostig
5b6e714d05 Expose an RNG (the one used by our runtime) to Rust via std. 2010-07-25 21:45:09 -07:00
Roy Frostig
7ef9e82f51 Don't write to NULL after calling C natives returning void. 2010-07-25 21:27:28 -07:00
Graydon Hoare
3ce18d88c5 Another quick fix from jmuizelaar for that "some ocaml versions dont't notice wrong wildcard count in patterns" bug. 2010-07-23 15:38:34 -07:00
Graydon Hoare
44e2dc2789 Improve mutability checking. Closes #118. 2010-07-23 15:29:17 -07:00
Graydon Hoare
8bd8413906 Add test for writing-through-uninit bug (reported on IRC by jrmuizel), plus fix in typestate system. 2010-07-23 13:52:46 -07:00
Graydon Hoare
62b69503d5 Stop using project_lval_ty_from_slot for lval_ty; cover residual un-caught cases in type.ml. 2010-07-23 13:51:56 -07:00
Graydon Hoare
ac228a59ce Widen write mutability check to cover all writing stmts. 2010-07-23 13:51:17 -07:00
Graydon Hoare
fe82978980 Modify testcase to match new syntax and un-XFAIL mutable-vec-drop.rs. 2010-07-23 12:32:12 -07:00
Graydon Hoare
b5e46ac2a0 Two more testcases for overwriting already-live box-like fields in structures, without leaking. 2010-07-23 12:22:31 -07:00
Graydon Hoare
6668595ebf Include all lval-writing statements in stmt_is_init calculation, not just "copy-like". Un-XFAIL generic-tag-alt.rs 2010-07-23 12:21:06 -07:00
Graydon Hoare
7d44ee7c3c Add pretty-printing for alt-tag statements. 2010-07-23 12:20:20 -07:00
Graydon Hoare
4d4fa99b31 Rename STMT_init_* to STMT_new_*; former name was confusing. 2010-07-23 11:37:38 -07:00
Roy Frostig
1730d2e037 Notify copy glue of dst-initialization and fix _vec.alloc issues in lib and runtime. Closes #109. 2010-07-22 17:47:32 -07:00
Graydon Hoare
ede42cf931 A certain incomplete quantity of wrestling with "INIT" statements that don't actually initialize. Should probably rename them to MAKE. Anyway, WIP, but two steps forward (and one back). More later. 2010-07-22 17:05:45 -07:00
Graydon Hoare
c6af9dda69 Un-XFAIL stuff that started working when pcwalton's new typechecker landed. 2010-07-22 15:40:04 -07:00
Graydon Hoare
7ff2094496 Back out too-platform-fussy bits in preempt-test work. I hate this test. 2010-07-22 15:39:41 -07:00
Graydon Hoare
1cb4a57b7b Re-classify some err / bug cases as unimpl. Ideally rustboot should never produce a backtrace. 2010-07-22 15:25:29 -07:00
Graydon Hoare
0f220ecae9 Beat up on the preempt test a bit more, as it keeps hanging under valgrind. 2010-07-22 15:05:35 -07:00
Roy Frostig
3708865906 Re-introduce bits of vec-lib test that blocked on now-fixed issue #108. 2010-07-22 12:49:11 -07:00
Roy Frostig
1ae13b3fdd Source FIXME annotations for issue #81 and a correction to STMT_bind fmt. 2010-07-22 12:45:58 -07:00
Graydon Hoare
a61be2d74a XFAIL task-comm-5, it's burning the tinderboxes. 2010-07-22 12:26:09 -07:00
Graydon Hoare
eaa35611dc Add XFAIL'ed test for return-in-iter, call unimpl when we find it. Closes #100. 2010-07-22 12:24:55 -07:00
Graydon Hoare
c96634af4b Fix mem op= mem bug in trans.ml (via not terribly good fix). Closes #111. 2010-07-22 12:11:39 -07:00
Jeffrey Yasskin
2c24f70cf4 Fix simple generic type parameters in LLVM. 2010-07-23 00:42:51 +08:00
Jeffrey Yasskin
09885b5b87 Implement tuple access for LLVM.
This involved adding an Ast.ty return to trans_lval.

I also included the code for record and box access, but their tests don't
completely pass yet.
2010-07-23 00:42:51 +08:00
Graydon Hoare
c070c11248 Nothing change, to tickle tinderboxes. 2010-07-21 15:10:16 -07:00
Graydon Hoare
5cebace3d8 XFAIL comm-2 for now; there's an assertion trappping in rust_task::wakeup. 2010-07-21 12:22:50 -07:00
Jeffrey Yasskin
c99f0273e3 Make sure debug locations are propagated to every new block created by making
them an argument to new_block.  gdb should do a good job of single-stepping
LLVM-compiled rust programs by rust line number now.
2010-07-22 01:11:35 +08:00
Jeffrey Yasskin
215060b72b Teach the makefile to generate .ll files,
which are helpful in debugging the llvm backend.  Also tell git to ignore
LLVM's intermediate files.
2010-07-22 01:11:34 +08:00
Jeffrey Yasskin
068c71f11c Fix -Wnon-virtual-destructor, which apple's gcc-4.0 seems to turn on by default. 2010-07-22 01:11:34 +08:00
Graydon Hoare
aca5082273 Back out "::ALL" default logbits. 2010-07-20 18:38:06 -07:00