Commit graph

15284 commits

Author SHA1 Message Date
Graydon Hoare
f0faeaed25 Yeah. Not even a semantic mix-up: just a damn typo. 2010-07-01 23:45:16 -07:00
Graydon Hoare
27d69a88b1 Teach clone_ty to tolerate cloning a mutable (though not state) type. 2010-07-01 23:20:28 -07:00
Graydon Hoare
a2e4d45600 Improve mangling. 2010-07-01 23:15:42 -07:00
Graydon Hoare
f3de4ee2a7 Teach the associative_binary_op_ty_fold about box, mutable and tys. 2010-07-01 23:12:34 -07:00
Graydon Hoare
01cfcfab13 Strip outer 'mutable' off slot when deciding if pred can apply. 2010-07-01 21:20:30 -07:00
Graydon Hoare
2d40bc669c Retire defunct copy_ty in favour of trans_copy_ty, which invokes the same logic at the bottom. 2010-07-01 21:02:49 -07:00
Graydon Hoare
d0a1b6e914 Reinstate disgusting, filthy workarounds for deriving missing type information. It existed before, we will survive if it exists now. 2010-07-01 20:24:23 -07:00
Graydon Hoare
4273986623 Remove similar over-application of auto-deref from type. 2010-07-01 19:30:35 -07:00
Graydon Hoare
65a87a55a1 Remove too-optimistic (and not harmless) over application of auto-deref in trans. 2010-07-01 19:29:51 -07:00
Graydon Hoare
314af0a44b Split out and improve trans_init_box. 2010-07-01 19:29:03 -07:00
Graydon Hoare
7df949af40 Add logging to trans_init_slot_from_atom. 2010-07-01 19:28:11 -07:00
Graydon Hoare
6c9832d3ec Catch ast pretty-printer up with init-tup syntax. 2010-07-01 19:27:20 -07:00
Graydon Hoare
bb018b24f5 Fox the clauses that actually satisfy box and mutable constraints; in all the confusion I had got those wrong. 2010-07-01 18:39:58 -07:00
Graydon Hoare
c27879a1aa Of course, the LHS constraint on an init-box statement is mutable @. 2010-07-01 18:39:08 -07:00
Graydon Hoare
fdafec39de Clarify in type logging when we have a constraint vs. a resolved type. 2010-07-01 18:38:28 -07:00
Graydon Hoare
fb7e37842b Add compile-check target for just attempting to compile, not run, the tests. 2010-07-01 18:37:53 -07:00
Graydon Hoare
f72774db7a Correct existing reliance on auto-box / unbox behavior in tests. 2010-07-01 18:37:30 -07:00
Graydon Hoare
792d96474e Box the integer passed to the handle in obj-drop.rs. No more implicit arg-boxing. 2010-07-01 18:04:21 -07:00
Graydon Hoare
2120599387 Establish the box constraint on the dst in STMT_init_box before propagating it to the rval. 2010-07-01 18:03:37 -07:00
Graydon Hoare
c30353d4f9 Remove TYSPEC_loggable. Everything's loggable (or will be, eventually; the backend can catch unimplemented cases until then). 2010-07-01 17:56:20 -07:00
Graydon Hoare
4bec9538cc Check the simplified type used in check-expr in trans. 2010-07-01 17:55:28 -07:00
Graydon Hoare
ae25e66a7f Extract pattern-slot variables in lval typecheck context (mutable ok). 2010-07-01 17:11:01 -07:00
Graydon Hoare
abfeefc662 Relax alias-analysis pass to permit literal-aliasing. 2010-07-01 17:10:30 -07:00
Graydon Hoare
bcc7ec18b8 Remove the catch-all in type.ml, add cases for every stmt (a couple more handled; mostly still stubs). 2010-07-01 16:56:39 -07:00
Graydon Hoare
9138438620 Convey auto-deref judgments made in typechecker to trans layer; control the decision in one place. 2010-07-01 15:59:29 -07:00
Graydon Hoare
90b36dcd26 Correct overzealous bulk-edit to LLVM code. 2010-07-01 15:26:00 -07:00
Graydon Hoare
2122b59ea2 Some work on teaching trans to differentiate between auto-deref and explicit-deref contexts. 2010-07-01 13:20:57 -07:00
Graydon Hoare
ef61c458fa Add more logging to copy/init paths. 2010-07-01 11:11:34 -07:00
Graydon Hoare
bb3aad72c4 Remove redundant indirection-function. 2010-07-01 11:11:07 -07:00
Graydon Hoare
a7016ade65 Implement STMT_init_box in trans, clean up some of the semant table-accessors. 2010-07-01 10:44:27 -07:00
Graydon Hoare
8acb2cf47d Add STMT_init_box to typestate pass. 2010-07-01 10:14:38 -07:00
Graydon Hoare
a61e85ca34 Simplify types before analyzing call structure; 2 more tests compile. 2010-07-01 10:09:04 -07:00
Graydon Hoare
cb04275afa Add machine-dependent 'float' type. 2010-07-01 09:35:48 -07:00
Graydon Hoare
afc0dc8bfc Fix lexer's definition of numeric literals. 2010-07-01 09:03:47 -07:00
Roy Frostig
5a07e98c5d Fix two bugs in tag patterns: 1. Look up the tag constructor function item using lval_item, not lval_to_referent; 2. Correct the form of the name used to query the tag or iso ty_tag when obtaining the corresponding type tuple. 2010-07-01 00:09:11 -07:00
Graydon Hoare
6a0b06e562 Rename 'exterior' to 'box' and 'interior' to 'local' (at least wrt. slots; keep MEM_interior for describing interior-parts-of-allocations) 2010-06-30 22:45:54 -07:00
Graydon Hoare
8b8186db87 No more "transplant" behavior in "let @x = y", gotta box explicitly. 2010-06-30 21:17:45 -07:00
Graydon Hoare
e460da3889 Auto-deref on lval-ext terms (x.y == x->y, if you like) 2010-06-30 21:16:13 -07:00
Graydon Hoare
0b252a96b1 De-duplicate code in get_resolved_ty, make recursive, add a case for tup. 2010-06-30 21:01:28 -07:00
Graydon Hoare
d2e7c1a5dc Add two move variants of "acceptable mismatches to recover from" when the mut_ok or ext_ok flags are set. 2010-06-30 21:00:57 -07:00
Graydon Hoare
edfcd3a723 Add relaxed init-context in which we're willing to auto-deref. 2010-06-30 21:00:09 -07:00
Graydon Hoare
f6fda46020 Add TYSPEC_mutable, merge control-flag for it and auto_deref into unify_ctx structure. 2010-06-30 19:45:40 -07:00
Graydon Hoare
cab674447f Make type-cast decisions based on simplified types. 2010-06-30 19:30:12 -07:00
Graydon Hoare
4765d1e358 Fix another type bug I introduced yesterday; found through wondrous logging technology. 2010-06-30 15:26:34 -07:00
Graydon Hoare
335053eb68 Improve logging in type. 2010-06-30 15:25:24 -07:00
Graydon Hoare
77cf4a880c Pick out error in type due to delightfully clear logging. 2010-06-30 15:16:37 -07:00
Graydon Hoare
4cd49c0ab0 Improve logging in type.ml, give it indentation and per-statement context. 2010-06-30 15:13:29 -07:00
Graydon Hoare
b450838c46 Fix recently-broken lval formatter. 2010-06-30 15:12:42 -07:00
Graydon Hoare
6c3a2491d8 Add support for parsing COMP_deref lval components (*foo). 2010-06-30 14:51:36 -07:00
Graydon Hoare
9fb3e128da Fix formatting string. 2010-06-30 14:51:03 -07:00
Graydon Hoare
0ac6be85a9 Add a COMP_deref to lvals for explicit-derefs, modify typechecker to implicitly deref in only *some* contexts. 2010-06-30 12:39:11 -07:00
Graydon Hoare
8e4a10790f rewrite 'mutable &' as '& mutable', corresponding to grammar shift. 2010-06-30 02:30:17 -07:00
Graydon Hoare
e828b2a94d Tidy up (I think) a couple typos from patrick's last commit. 2010-06-30 01:45:36 -07:00
Graydon Hoare
df0eebcf1e Improve error message. 2010-06-30 01:42:40 -07:00
Graydon Hoare
5a8d93c652 Remove redundant (and misnamed) function "without_exterior" in trans. 2010-06-30 00:58:15 -07:00
Graydon Hoare
d796673c11 Reimplement backup scheme for handling lvals not yet resolved by typechecker. 2010-06-30 00:57:28 -07:00
Graydon Hoare
8120a59097 Init the exterior ty, not the inner ty. 2010-06-30 00:56:44 -07:00
Graydon Hoare
6ee16b588d Fix error-message typo. 2010-06-30 00:55:53 -07:00
Graydon Hoare
992f344c83 Use simplified_ty in effect. 2010-06-30 00:55:27 -07:00
Graydon Hoare
7e853457df Move simplified_ty from trans to semant and use it a few places. 2010-06-30 00:55:04 -07:00
Graydon Hoare
861423989d Add logging to type and effect. 2010-06-30 00:53:33 -07:00
Graydon Hoare
2a1d88ae00 Fix exterior formatter. 2010-06-30 00:52:52 -07:00
Graydon Hoare
7d076bcaa0 Get compiler to the point of building std.rc and rustc.rc. 2010-06-30 00:07:37 -07:00
Graydon Hoare
675f90eca3 Handle constrained types in type.ml while we're at it. 2010-06-30 00:07:05 -07:00
Graydon Hoare
fc1b86e1ca Wrap long lines. 2010-06-30 00:06:31 -07:00
Patrick Walton
c2d4c1116f Teach the typechecker about the auto-dereference and auto-promote-to-mutable semantics we're going with 2010-06-29 19:56:04 -07:00
Graydon Hoare
f05fc6b9d7 Different, not quite correct yet, but I think slightly closer to correct, approach to convincing the typechecker to get along with this new type grammar. 2010-06-29 18:25:16 -07:00
Graydon Hoare
2a00a61ef3 Thread a 'simplification' flag through unifier, attempt to strip off layers of ignorable types when simplification is permitted.
Gets std.rc through typechecking, but assigns some wrong types to lvals (the simplified types, not the correct ones).
2010-06-29 16:46:07 -07:00
Roy Frostig
e692ccfb0c Add (XFAILed) testcase for typechecker issue where fns-in-mods appear to lose their type parameters over the course of the typechecking pass. 2010-06-29 16:13:26 -07:00
Graydon Hoare
7b11a52a37 Update LLVM translation to match changes to slot and ty. 2010-06-29 14:06:50 -07:00
Graydon Hoare
17c293bbaa Merge branch 'master' of git@github.com:graydon/rust 2010-06-29 12:06:18 -07:00
Graydon Hoare
1f9fd2710e Initial stab at lowering mutable and exterior into the type system. 2010-06-29 12:00:15 -07:00
Graydon Hoare
ffdcd67c25 Fix underlying failure to signal errors when dep'ing. 2010-06-29 10:32:11 -07:00
Graydon Hoare
0ad7468ff2 Revert "Improve makefile to try to avoid wedging on failure-to-dep lib/std.rc"
This reverts commit 3bc263f102.
2010-06-29 10:30:36 -07:00
Graydon Hoare
3bc263f102 Improve makefile to try to avoid wedging on failure-to-dep lib/std.rc 2010-06-29 10:25:25 -07:00
Roy Frostig
0d6aaec493 Work-around and un-XFAIL generic-obj.rs test. The problem uncovered in the original XFAIL is more generally that of issue #92. 2010-06-29 00:48:49 -07:00
Roy Frostig
023e5af639 The few and proud isolated bits from stdlib-work so far that don't break everything. Note util.rs hasn't yet been declared mod in the std crate. Don't do that yet, as it breaks make check. 2010-06-28 23:18:51 -07:00
Graydon Hoare
d94f0e2498 Add a NO_VALGRIND override mechanism to makefile, if you want day-to-day builds to cycle faster on linux. 2010-06-28 22:29:17 -07:00
Roy Frostig
d5ff6e133c Add to generic-obj.rs testcase a method that takes an argument of the object type-param type. XFAIL the test since it no longer passes. 2010-06-28 21:45:48 -07:00
Roy Frostig
5b5b334c24 Testcase (XFAILed) for fn item given as lval. 2010-06-28 21:18:09 -07:00
Graydon Hoare
329a65530f Canonicalize hashtables after running them through htab_map. Closes #77. 2010-06-28 19:24:04 -07:00
Graydon Hoare
bd059a354d Whitespace. 2010-06-28 19:21:09 -07:00
Graydon Hoare
5abc483d9a Move more of the GC logic into the runtime. 2010-06-28 18:53:43 -07:00
Roy Frostig
a27cbd4ee8 Testcase (XFAILed) for mutable alias vec weirdness. 2010-06-28 16:36:24 -07:00
Roy Frostig
66d313d365 Teach the typechecker that uints are integral types. Closes #88. 2010-06-28 15:27:05 -07:00
Graydon Hoare
d608c09168 Some fixme-to-issue housekeeping. 2010-06-28 09:39:43 -07:00
Graydon Hoare
e1f6749f9a Once more with feeling. Closes #13. 2010-06-27 20:54:33 -07:00
Graydon Hoare
8815c02005 Previous commit closes #13. Trying to convince github of that fact automagically. 2010-06-27 20:53:07 -07:00
Graydon Hoare
1316312c0c Only translate or dwarf-emit items or stubs locally defined or used. Avoids instantiating O(sizeof(standard-library)) worth of imports stubs on each 'use std'. Closes issue 13. 2010-06-27 20:48:28 -07:00
Graydon Hoare
7045526a3e Change slot_mem_ctrl to classify vec[state] as GC mem. Breaking / XFAILing mutable-vec-drop.rs test. 2010-06-27 13:53:23 -07:00
Graydon Hoare
fb3e2fa4bf Encode tag and iso types at dwarf level. Can't decode them yet. 2010-06-27 13:48:25 -07:00
Graydon Hoare
7ea416f4c3 Add callable gc method exposed to user code, use it in mlist-cycle.rs test (still not quite working; some memory corruption in the recursive tag constructors, not the GC) 2010-06-25 23:57:30 -07:00
Graydon Hoare
9236ad2846 Further attempts to convince mem_ctrl to be sane. 2010-06-25 23:55:36 -07:00
Graydon Hoare
50e96414d2 Fix register-use bugs in sweep pass, factor sweep pass out and call twice for separate sever/free phases. 2010-06-25 23:07:34 -07:00
Graydon Hoare
90eaaf666b Improve sever_slot logging. 2010-06-25 23:03:06 -07:00
Graydon Hoare
49ac5e6312 Fix copy-paste error in logging function. 2010-06-25 23:02:19 -07:00
Graydon Hoare
37426e42cf Add sever-glue, for missing first stage of sweep. 2010-06-25 21:57:46 -07:00
Graydon Hoare
0cf3c2ad93 Pass type parameters to free function called from sweep loop. 2010-06-25 21:20:32 -07:00
Graydon Hoare
3718055276 Align emitted DATA_* elements -- tydescs in particular -- to 16 byte boundaries, so we can get our tag bit freed up. 2010-06-25 20:47:16 -07:00
Graydon Hoare
dd2716f56c Fix bad register use in GC sweep pass. 2010-06-25 20:46:11 -07:00
Graydon Hoare
968ec14527 Fix marking logic. 2010-06-25 19:56:29 -07:00
Graydon Hoare
34dc7053eb Fix over-conservatism in alias analysis. 2010-06-25 19:55:40 -07:00
Graydon Hoare
c56a729ff1 Remove obsolete comment. 2010-06-25 17:32:35 -07:00
Graydon Hoare
eb7807c4fe I hear actually loading the next pointer into the right register helps when walking a list. 2010-06-25 17:31:08 -07:00
Graydon Hoare
d601b357ec Debug GC glue enough that marking passes. 2010-06-25 16:59:29 -07:00
Graydon Hoare
2a2474d497 Update comment to reflect slightly-improved GC situation. 2010-06-25 16:56:25 -07:00
Graydon Hoare
eed5c0aa24 Add rust_task::gc(size_t args) method that drops us back into the GC glue. 2010-06-25 16:54:03 -07:00
Graydon Hoare
67d1f0a9aa Emit gc glue and rearrange crate glue offsets slightly to have a regular order. 2010-06-25 15:43:55 -07:00
Graydon Hoare
2e3fa5bd68 Return at end of GC glue. 2010-06-25 15:43:03 -07:00
Graydon Hoare
a9c639ec8a Fix forgotten llvm xfail in Makefile. 2010-06-25 15:42:24 -07:00
Graydon Hoare
c06ea8f944 Add test of recursive object types (ha, work by default) and fix effect-walker bug revealed by it. 2010-06-25 12:15:40 -07:00
Graydon Hoare
422b8a6be4 Unlink (doubly) gc chain on free. 2010-06-25 11:48:17 -07:00
Graydon Hoare
e875993471 Doubly-link gc chain on alloc. 2010-06-25 11:00:23 -07:00
Graydon Hoare
63b5e18207 Enlarge gc header to doubly-link the gc chain. 2010-06-25 09:00:08 -07:00
Graydon Hoare
5dfe101e51 Revert "Add intrinsic calling convention." Isn't going to work.
This reverts commit 72c6c60d80.
2010-06-25 01:33:00 -07:00
Graydon Hoare
287d69ddac Sketch out gc glue. 2010-06-25 01:32:59 -07:00
Roy Frostig
85a701c8f6 Add testcases for item name conflict at the same path level. 2010-06-25 01:26:44 -07:00
Roy Frostig
241305caab Resolve and typecheck patterns in pattern alt redux. This time featuring way more correctness. 2010-06-25 00:47:23 -07:00
Graydon Hoare
0d9565a4c1 Rearrange pexp-custom stuff a bit. 2010-06-25 00:00:31 -07:00
Graydon Hoare
72c6c60d80 Add intrinsic calling convention. 2010-06-24 19:21:40 -07:00
Graydon Hoare
c483808e0f Factor out some trans bits. 2010-06-24 19:21:15 -07:00
Graydon Hoare
1c60be2f32 Fix bad output-slot logic in tag constructors. 2010-06-24 18:25:10 -07:00
Graydon Hoare
bcf29b882a A couple new tests for broken parts of the typechecker, XFAILed. 2010-06-24 16:57:00 -07:00
Graydon Hoare
24d5ff75c3 Fix output-slot handling for real. It's been broken for a long time. 2010-06-24 16:19:55 -07:00
Graydon Hoare
af44ec2856 Issue 24, drop output slot when not initializing. Un-XFAIL generic-tag.rs. Add test for output slot modes with several broken cases. 2010-06-24 13:32:59 -07:00
Graydon Hoare
69a34503f4 Remove redundant copy of comment. 2010-06-24 11:18:02 -07:00
Graydon Hoare
0364a801bb Clean up trans_alt_tag to use slots, not assume interior words. Also remove record-based destructuring (hard on eyes). Add execution parts to generic-tag-alt.rs and un-XFAIL it. 2010-06-24 11:15:22 -07:00
Graydon Hoare
25eb1fd3c9 Add fmt module, move out some common format helpers, add instruction-selection tracing and make selection use queues rather than list refs. 2010-06-24 10:34:47 -07:00
Graydon Hoare
4a1f86ccd7 Merge timer loop functions, fix win32 build broken by logger change. 2010-06-24 08:52:52 -07:00
Graydon Hoare
935442babc Fix hg dependency in testsuite. 2010-06-24 08:44:14 -07:00
Roy Frostig
1f3cff91f6 Remove bogus FIXME. 2010-06-24 08:23:17 -07:00
Roy Frostig
bc286c7f2c Resolve and typecheck patterns in pattern alt. 2010-06-24 08:13:32 -07:00
Graydon Hoare
d6b7c96c3e Populate tree. 2010-06-23 21:03:09 -07:00
Graydon Hoare
c01efc669f Initial git commit. 2010-06-16 14:30:45 -07:00