Brian Anderson
e325146eb4
Merge remote-tracking branch 'brson/mainthread'
...
Conflicts:
src/rt/rust_kernel.cpp
src/rt/rust_scheduler.cpp
src/rt/rust_scheduler.h
2012-04-03 20:30:01 -07:00
Brian Anderson
4cf7efc8f7
rt: Fix bugs in the osmain scheduler
2012-04-03 20:24:29 -07:00
Brian Anderson
bd97ee6520
rustdoc: Remove stray binary
2012-04-03 19:01:00 -07:00
Brian Anderson
c0e12854ed
rt: Fix bugs in the osmain scheduler
2012-04-03 18:01:13 -07:00
Tim Chevalier
5571a9a193
also xfail class-typarams (doesn't work on Windows)
2012-04-03 17:47:07 -07:00
Brian Anderson
81ce090643
rt: Include the correct header for alloca on windows
2012-04-03 17:19:15 -07:00
Tim Chevalier
bc5e10dd1b
xfail - metadata encoding doesn't work, which breaks Windows
2012-04-03 17:16:14 -07:00
Brian Anderson
ab2158f070
rt: alloca is spelled differently on win32
2012-04-03 17:12:10 -07:00
Brian Anderson
f4b293f0e3
rt: Fix the 0 bytes lost issue
...
This is a workaround for #1815 . libev uses realloc(0) to
free the loop, which valgrind doesn't like. We have suppressions
to make valgrind ignore them.
Valgrind also has a sanity check when collecting allocation backtraces
that the stack pointer must be at least 512 bytes into the stack (at
least 512 bytes of frames must have come before). When this is not
the case it doesn't collect the backtrace.
Unfortunately, with our spaghetti stacks that valgrind check triggers
sometimes and we don't get the backtrace for the realloc(0), it
fails to be suppressed, and it gets reported as 0 bytes lost
from a malloc with no backtrace.
This fixes the issue by alloca'ing 512 bytes before calling uv_loop_delete
2012-04-03 17:08:33 -07:00
Tim Chevalier
1f892dcb01
Monomorphize class constructors, support generic classes and class methods
...
Allow class methods to have type parameters (this is a change from the
original classes proposal).
Add test cases for classes with type parameters, and classes with methods
that have their own type parameters.
2012-04-03 16:23:50 -07:00
Brian Anderson
4f4b7b10bb
rt: Futz with headers to satisfy FreeBSD
2012-04-03 16:02:38 -07:00
Jon Morton
72ffb4b446
fix 'I don't know how C works'
2012-04-03 16:02:38 -07:00
Jon Morton
386069f39e
actually remove memory.h; include cleanups
2012-04-03 16:02:38 -07:00
Jon Morton
632a4c9326
Refactor includes structure, getting rid of rust_internal.h
...
Many changes to code structure are included:
- removed TIME_SLICE_IN_MS
- removed sychronized_indexed_list
- removed region_owned
- kernel_owned move to kernel.h, task_owned moved to task.h
- global configs moved to rust_globals.h
- changed #pragma once to standard guard in rust_upcall.h
- got rid of memory.h
2012-04-03 16:02:38 -07:00
Brian Anderson
bef72447e7
core: Add a scheduler mode, osmain, to spawn onto the main scheduler
2012-04-03 14:28:30 -07:00
Niko Matsakis
704ca046a1
update make glob from .so to .dylib
2012-04-03 11:54:24 -07:00
Marijn Haverbeke
f65e26eeee
Output type sizes in reinterpret_cast error message
...
Closes #2095
2012-04-03 16:37:54 +02:00
Marijn Haverbeke
90d3f0fb5e
Ensure method names in iface and impl items are unique
...
Closes #2114
2012-04-03 16:37:28 +02:00
Tim Chevalier
fabd49bc2d
Use os::copy_file in cargo
2012-04-02 22:57:28 -07:00
Tim Chevalier
e9ff495942
Merge branch 'issue-1983' of https://github.com/thomaslee/rust into issue-2090
...
This adds a new os::copy_file function, contributed by Thomas Lee.
I added test cases.
2012-04-02 21:47:20 -07:00
Graydon Hoare
28a0e9c999
Construct new strings through upcalls.
2012-04-02 17:38:06 -07:00
Tim Chevalier
21be1379d5
Rename some core::option functions
...
from_maybe => get_with_default
maybe => with_option
may => with_option_do
I know these names are kind of ridiculous, but it's the best I could think of.
Feel free to bikeshed. Closes #2081
2012-04-02 16:12:49 -07:00
Brian Anderson
e1858882a4
rt: Run a single-threaded scheduler on the main thread
2012-04-02 15:35:47 -07:00
Graydon Hoare
987bc23629
Remove redundant **tydesc gepi/load pair in call_tydesc_glue_full.
2012-04-02 15:26:12 -07:00
Brian Anderson
dd63c5ef1d
rt: Add an assert to rust_get_current_task
2012-04-02 14:23:24 -07:00
Jon Morton
fa88d15d63
remove unneeded assert, move get_task_tls to sched_loop
2012-04-02 14:21:09 -07:00
Jon Morton
33a949eed6
Add global rust_get_current_task
...
Previously two methods existed: rust_sched_loop::get_task and rust_task::get_task_from_tcb. Merge both of them into one, trying the faster one (tcb) first, and if that fails, the slower one from the tls.
2012-04-02 14:21:08 -07:00
Jon Morton
bcb9269d84
rt: cleanup passing around of rust_env
2012-04-02 03:11:58 -05:00
Brian Anderson
bee45f0ef0
rt: rust_env is a struct
2012-04-01 21:07:42 -07:00
Brian Anderson
3232c52a61
rt: Assert things that are true
2012-04-01 20:54:30 -07:00
Brian Anderson
6042aefeeb
rt: Convert an old warning to an assert
2012-04-01 20:49:41 -07:00
Jon Morton
128a8b6ed5
remove rust_srv
2012-04-01 22:18:40 -05:00
Jon Morton
413994ea3e
replace assertion macros with plain asserts
2012-04-01 21:14:16 -05:00
Brian Anderson
3654ef0078
rt: Introduce rust_manual_sched_launcher_factory. Again, so sorry
2012-04-01 17:35:35 -07:00
Brian Anderson
7c1be236a5
rt: Introduce rust_sched_launcher_factory. Sorry, I need one
2012-04-01 17:27:18 -07:00
Brian Anderson
fb528dd7d6
rt: Allow some schedulers to stay alive even without tasks to execute
2012-04-01 16:57:14 -07:00
Brian Anderson
0a5e9d45e1
rt: Introduce rust_manual_sched_launcher
2012-04-01 16:21:48 -07:00
Brian Anderson
efe4c6af23
core: Use the or binop instead of the double-star binop
2012-04-01 15:05:29 -07:00
Brian Anderson
252086c89a
Merge pull request #2099 from jsternberg/master
...
os::list_dir to return only the contents of the directory
2012-04-01 14:59:07 -07:00
Brian Anderson
9d5c20ecca
rt: rust_sched_launcher needs a virtual destructor
2012-04-01 13:25:49 -07:00
Jonathan Sternberg
3a0477c398
Fixing issue 1919. list_dir is the more general version that returns a vector with the contents of the directory. list_dir_path contains the old behavior (as a convenience function).
2012-04-01 11:39:17 -04:00
Brian Anderson
ac0381c0bb
rt: rust_sched_launcher does not need a join() method
2012-04-01 00:24:25 -07:00
Brian Anderson
e78396850d
Merge remote-tracking branch 'brson/mainthread'
...
Conflicts:
src/rt/rust_sched_loop.cpp
src/rt/rust_shape.cpp
src/rt/rust_task.cpp
2012-04-01 00:15:04 -07:00
Brian Anderson
de47fcfdf9
rt: Extract rust_thread_sched_launcher from rust_sched_launcher
2012-03-31 23:35:41 -07:00
Brian Anderson
21064637ed
rt: Fix whitespace
2012-03-31 23:12:06 -07:00
Brian Anderson
a17097a57b
rt: Make rust_sched_launcher hide it's thread implementation
2012-03-31 21:48:52 -07:00
Brian Anderson
2d8ef7387e
rt: Add some more locking asserts to rust_sched_loop
2012-03-31 19:51:30 -07:00
Brian Anderson
c8dc6fcb4c
Revert "rt: Remove lock_held_by_current_thread"
...
Adds back the ability to make assertions about locks, but only under the
--enable-debug configuration
This reverts commit b247de6458
.
Conflicts:
src/rt/rust_sched_loop.cpp
2012-03-31 19:51:29 -07:00
Brian Anderson
609144f7a6
rt: Extract start_main_loop from rust_sched_loop to rust_sched_driver
2012-03-31 19:51:29 -07:00
Brian Anderson
218dd08469
rt: Introduce rust_sched_reaper
...
This just moves the responsibility for joining with scheduler threads
off to a worker thread. This will be needed when we allow tasks to be
scheduled on the main thread.
2012-03-31 19:51:29 -07:00
Brian Anderson
771c1be6a6
rt: Refactor the scheduler loop so that it can be driven from without
2012-03-31 19:51:29 -07:00
Brian Anderson
243790836a
rt: Rename rust_task_thread to rust_sched_loop
...
This class no longer represents a thread; it just schedules tasks.
2012-03-31 19:51:29 -07:00
Brian Anderson
6bf8d19712
rt: Extract rust_sched_launcher from rust_task_thread
...
rust_sched_launcher is actually responsible for setting up the thread and
starting the loop. There will be other implementations that do not actually
set up a new thread, in order to support scheduling tasks on the main OS
thread.
2012-03-31 19:51:29 -07:00
Jon Morton
9851a906a5
initialize cur_thread, first task on thread 0
2012-03-31 13:14:54 -05:00
Jon Morton
8aee42a382
Choose task thread in rust_scheduler by round robin
...
Remove the random context from rust_scheduler and use a simple round robin system to choose which thread a new task gets put on. Also, some incorrect tab indents around scoped blocks were fixed.
2012-03-31 02:14:44 -05:00
Brian Anderson
0904f25507
rustc: Convert some error logs to debug
2012-03-30 17:31:40 -07:00
Marijn Haverbeke
a4906b81f7
Change a span_err back to span_fatal
...
Closes #2073
2012-03-30 08:25:45 +02:00
Brian Anderson
6e8cf935db
core: Add each, each_char to str::extensions
2012-03-29 22:30:15 -07:00
Brian Anderson
8641c95221
core: Add str::each_char
2012-03-29 22:28:26 -07:00
Brian Anderson
9bff2f2545
core: Add each, eachi to vec::extensions
2012-03-29 22:17:11 -07:00
Brian Anderson
5d54defce4
core: Add extension methods for vec
2012-03-29 20:56:50 -07:00
Brian Anderson
f65ea0c812
core: Add extension methods for option
2012-03-29 20:56:50 -07:00
Brian Anderson
392d3c8d44
core: Add extension methods for str
2012-03-29 20:56:50 -07:00
Niko Matsakis
35a3fa0999
add some comments explaining how the tables work
2012-03-29 19:41:09 -07:00
Niko Matsakis
2b45da8a33
refactor to store the types during inference in tables in the fcx
...
this is a step towards separating out the repr. of
types during inference from the repr. in later stages.
2012-03-29 19:41:09 -07:00
Niko Matsakis
f682b99e36
generate correct constraints for assignments
2012-03-29 19:41:09 -07:00
Niko Matsakis
76d0a13ae5
resolve type variables with no constraints to bot
2012-03-29 19:41:09 -07:00
Brian Anderson
5b3740508a
test: Prevent run-fail/too-much-recursion from being optimized to nothing
2012-03-29 16:43:18 -07:00
Brian Anderson
b17145b4ae
rt: Track backtraces of all allocations with RUSTRT_TRACK_ALLOCATIONS=3
2012-03-29 16:43:18 -07:00
Brian Anderson
3ff01361d5
rt: Make the CC sweep use the box annihilator
2012-03-29 16:43:18 -07:00
Brian Anderson
ad26b00696
rustc: Generate fewer landing pads
2012-03-29 16:43:18 -07:00
Brian Anderson
15de9b3c95
rt: Make the box annihilator walk and delete contents
2012-03-29 16:43:18 -07:00
Brian Anderson
5747fe7a2c
rt: For now, only run the box annihilator after task failure
2012-03-29 16:43:18 -07:00
Brian Anderson
7f9ed39040
rustc: Only invoke when there are cleanups
2012-03-29 16:43:18 -07:00
Brian Anderson
8780db2e0b
rustc: Delete some unused invoke code
2012-03-29 16:43:18 -07:00
Brian Anderson
b420f46f03
rustc: Don't generate landing pad cleanups for boxy things
2012-03-29 16:43:18 -07:00
Brian Anderson
3a7a408386
rt: Free all outstanding boxes at task death
2012-03-29 16:43:18 -07:00
Brian Anderson
106c9faa59
rustc: Move ext to librustsyntax
2012-03-29 14:42:31 -07:00
Brian Anderson
14e9f58b50
build: Add librustsyntax to snapshots
2012-03-29 14:42:31 -07:00
Brian Anderson
0e87039348
rustc: Remove the rustsyntax::attr wrapper in front
2012-03-29 14:42:31 -07:00
Brian Anderson
ba69a738c7
rustc: Cleanup
2012-03-29 14:42:31 -07:00
Brian Anderson
442d0a783a
rustc: Move attr, parse, print to rustsyntax
2012-03-29 14:42:31 -07:00
Brian Anderson
15947f8b19
rustc: Move lexer and token to rustsyntax
2012-03-29 14:42:30 -07:00
Brian Anderson
ce216a5533
rustc: Remove the session dependency from front::attr
2012-03-29 14:42:30 -07:00
Brian Anderson
cb2840bcaf
rustc: Add an accessor to get the diagnostic handler from the session
2012-03-29 14:42:30 -07:00
Brian Anderson
8f809f89d9
rustc: Move diagnostic to rustsyntax
2012-03-29 14:42:30 -07:00
Brian Anderson
5c25e78b27
rustc: Move fold to rustsyntax
2012-03-29 14:42:30 -07:00
Brian Anderson
454df53464
rustc: Move interner to rustsyntax
2012-03-29 14:42:30 -07:00
Brian Anderson
9e299f53f4
rustc: Move ast, ast_util, visit to rustsyntax
2012-03-29 14:42:30 -07:00
Brian Anderson
140151f3f9
rustc: Move codemap to rustsyntax
2012-03-29 14:42:30 -07:00
Brian Anderson
a0ed1fb20b
build: Introduce rustsyntax crate
2012-03-29 14:42:30 -07:00
Tim Chevalier
c7082ce8e8
Require "self" as base expression for intra-class method or field references
...
All field or method references within a class must begin with "self." now.
A bare reference to a field or method in the same class will no longer
typecheck.
2012-03-29 12:22:01 -07:00
Patrick Walton
c2f28e231f
stdlib: Remove the now-obsolete vec::alloc_len in favor of vec::capacity
2012-03-29 08:57:34 -07:00
Patrick Walton
8774493dd3
test: Rewrite binarytrees to use arenas
...
Perf isn't bad now. Still 50% slower than Java, but faster than other GC'd languages.
2012-03-29 08:41:26 -07:00
Patrick Walton
166d14e42d
stdlib: Actually increase arena chunk sizes by powers of two
2012-03-29 08:41:26 -07:00
Patrick Walton
b210c7ad97
stdlib: Allow the fast path of arena allocation to be CCI'd. 15% improvement on binary-trees.
2012-03-29 08:41:26 -07:00
Patrick Walton
1d25594657
rustc: Add a vec::alloc_len and fix arena logic to use it
2012-03-29 08:41:26 -07:00
Patrick Walton
5ce3d35f41
rustc: Don't zero out arena chunks with vec::from_elem; that's slow because it calls the glue.
2012-03-29 08:41:25 -07:00
Patrick Walton
2663018792
rustc: Fix an infinite loop during size calculations for recursive region pointer types
2012-03-29 08:41:25 -07:00
Patrick Walton
6f0cbf4cd4
stdlib: Fix a pointer mistake in arenas
2012-03-29 08:41:25 -07:00
Brian Anderson
0d5d2e5e14
core: Don't use upcall_vec_grow from str::push_char
2012-03-29 00:20:05 -07:00
Grahame Bowland
7a87258155
Rewrite str::push_char in rust.
...
Avoid crossing to C to reallocate underlying array when possible,
if we must we now only cross once per char (not once per byte.)
2012-03-29 00:20:05 -07:00
Brian Anderson
b7b66b6cb3
core: Don't call into the runtime to reserve if we have capacity
2012-03-29 00:20:05 -07:00
Brian Anderson
c0a99790cb
core: Add str::capacity
2012-03-29 00:20:05 -07:00
Brian Anderson
ad21976fbc
core: Add vec::capacity
2012-03-29 00:20:05 -07:00
Brian Anderson
5e42c5cf19
core: Add str::reserve_at_least
2012-03-29 00:20:05 -07:00
Brian Anderson
b3d7823381
core: Add and use vec::reserve_at_least
...
This reserves in powers of two
2012-03-29 00:20:05 -07:00
Brian Anderson
8e743b2981
core: Improve docs for str::reserve
2012-03-29 00:20:05 -07:00
Brian Anderson
1446534271
core: Clarify docs on vec::reserve
2012-03-29 00:20:05 -07:00
Graydon Hoare
412dba5743
Update snaps for linux to point to snaps that actually work on RHEL5.
2012-03-28 20:58:43 -07:00
Graydon Hoare
e950313155
Remove execvpe use in general, it seems pointless and non-portable.
2012-03-28 20:58:43 -07:00
Tim Chevalier
f7bbe537c1
Allow explicit self-calls within classes
...
Allow writing self.f() within a class that has a method f. In a future
commit, this syntax will be required. For now, you can write either
self.f() or f().
I added a "privacy" field to all methods (whether class methods or not),
which allowed me to refactor the AST somewhat (getting rid of the
class_item type; now there's just class_member).
2012-03-28 20:30:07 -07:00
Niko Matsakis
fe610f04d8
use fresh vars in place of _|_ when incorrect # of params supplied
2012-03-28 17:02:54 -07:00
Niko Matsakis
23f92ea370
Detect and report types which could never be instantiated.
...
Fixes #2063 .
2012-03-28 17:02:54 -07:00
Brian Anderson
8cf44bed57
core: Add int8_t, etc. types to libc::types::common::c99
2012-03-28 16:32:02 -07:00
Graydon Hoare
0622a74c48
Fix long line.
2012-03-28 15:16:32 -07:00
Niko Matsakis
3955b3a41a
refactor so that pretty mode tests also run aux-build. Fixes #2060 .
2012-03-28 14:59:36 -07:00
Patrick Walton
18a97d71f9
test: Un-XFAIL regions-mock-trans.rs and regions-mock-trans-impls.rs
2012-03-28 14:31:23 -07:00
Graydon Hoare
2aaca455b9
Tidy up multiple declarations and STDC_FOO_MACROS guards in headers.
2012-03-28 14:26:51 -07:00
Patrick Walton
3c398d28a4
rustc: Universally quantify regions when calling functions. Un-XFAIL regions-addr-of-ret.rs.
2012-03-28 14:24:18 -07:00
Tim Chevalier
ca6636d6b6
Allow references to "self" within classes
...
Allow writing self.f within a class that has a field f. Currently,
the compiler accepts either self.f or f. In a future commit I'll
require writing self.f and not f.
Not sure whether self.f() works if f is a method (making sure that
works next).
2012-03-28 14:19:00 -07:00
Graydon Hoare
c141e7a068
Fix some gcc-4.4-isms, should build now on 4.1+.
2012-03-28 13:52:47 -07:00
Graydon Hoare
b37d7e26fe
Update crate URLs to point to interesting things.
2012-03-28 13:52:47 -07:00
Jesse Ruderman
d0ddc69298
Update CC fuzzer
2012-03-28 12:30:07 -07:00
Jesse Ruderman
8d8581e7f9
Update AST fuzzer
2012-03-28 12:29:53 -07:00
Grahame Bowland
232c771105
python scripts run with Python 2.4 (for RHEL5)
2012-03-28 11:29:47 -07:00
Tim Chevalier
52f2a9a1c9
Test case to make sure typestate checks the body of class constructors
2012-03-28 10:38:57 -07:00
Marijn Haverbeke
90cf9e0d6f
Make sure type_use.rs doesn't get lost in recursive enums
...
Closes #2059
2012-03-28 10:35:16 +02:00
Tim Chevalier
edb747ceed
Enforce mutability declarations in classes; correct shapes for classes
...
1. Enforce mutability declarations on class fields. Don't allow any
mutation of class fields not declared as mutable (except inside the
constructor).
2. Handle classes correctly in shape (treat classes like records).
2012-03-27 22:11:58 -07:00
Niko Matsakis
c9102ee7a1
make type_kind exhaustive, add an entry for type_self (in particular)
2012-03-27 15:44:36 -07:00
Brian Anderson
42f2810eca
emacs: Make 'mut' a keyword
2012-03-27 15:10:25 -07:00
Brian Anderson
f4ee5582c7
core: Rename iter::to_list to to_vec. Closes #2056
2012-03-27 14:50:33 -07:00
Brian Anderson
ba3292d3be
rust: Remove extensions' dependency on the session
2012-03-27 14:16:46 -07:00
Marijn Haverbeke
73d6df32cd
Emergency safe-ref-checker maintenance
...
It still has some big problems, but at least it more or less
understands block arguments now.
Closes #1925
2012-03-27 17:22:57 +02:00
Marijn Haverbeke
b5a4fa9456
Move some code over to iterator-for to see how it performs.
2012-03-27 15:46:33 +02:00
Marijn Haverbeke
cbad6925c1
Register new snapshot
2012-03-27 13:53:11 +02:00
Marijn Haverbeke
eec6383771
Add vec::each, vec::eachi, and list::each
...
For use with the new for construct.
Issue #1619
2012-03-27 12:53:19 +02:00
Marijn Haverbeke
064f82d68d
Support returning from loop blocks
...
The code is somewhat invasive, but it seems hard to do this in a
clean way, since the design itself involves a bunch of 'action
at a distance'.
Issue #1819
2012-03-27 12:33:13 +02:00
Marijn Haverbeke
f6e3738b9c
Support an alternate for syntax that calls a higher-order function
...
The last argument of the call must be a block, and the type of this
argument must a function returning bool. `break` and `cont` are
supported in the body of the block, and return `false` or `true` from
the function. When the end of the function is reached, `true` is
implicitly returned.
for vec::all([1, 2, 3]) {|elt|
if elt == 2 { break; }
log(error, elt);
}
Issue #1619
2012-03-27 09:27:31 +02:00
Graydon Hoare
9638e7fece
Register new snapshots.
2012-03-26 22:10:02 -07:00
Graydon Hoare
6e6798c4e1
Bulk-edit mutable -> mut.
2012-03-26 18:35:18 -07:00
Graydon Hoare
bd0399863f
Disable some advanced (post glibc-2.3) libuv features when building snaps.
2012-03-26 18:03:53 -07:00
Brian Anderson
45a709766c
rustc: Begin eliminating ext's dependency on the session
2012-03-26 17:16:26 -07:00
Brian Anderson
a477aaba08
rustc: Move eval_const_expr to its own mod
2012-03-26 17:16:26 -07:00
Patrick Walton
b7a741b5d0
rustc: Combine and unify regions
2012-03-26 15:07:15 -07:00
Patrick Walton
03086c5304
rustc: "unkown" -> "unknown"
2012-03-26 12:53:06 -07:00
Patrick Walton
b86c603bdf
rustc: Fix typo in infer
2012-03-26 12:52:31 -07:00
Patrick Walton
d877ebdd05
rustc: Remove obsolete FIXME in infer
2012-03-26 12:49:14 -07:00
Patrick Walton
407be52036
rustc: Generalize resolve_var to work with regions too
2012-03-26 12:42:38 -07:00
Brian Anderson
d92f3ac524
Merge pull request #2054 from j3parker/master
...
Minor fixes
2012-03-26 12:24:53 -07:00
Tim Chevalier
11610f9ca1
In typeck, don't call ty::store_iface_methods on private methods
...
This was resulting in a different error message depending on whether
the private method you were trying to call was in the same crate
or a different one.
2012-03-26 10:46:37 -07:00
Niko Matsakis
21111660ca
Improve type inference to compute LUB/GLB
2012-03-26 10:34:58 -07:00
Tim Chevalier
2112c391cd
Remove stray comment
2012-03-26 10:04:46 -07:00
Tim Chevalier
c282810ab0
Enforce privacy declarations for class fields and methods
2012-03-26 10:00:33 -07:00
Marijn Haverbeke
a00538b3b3
Fix return-in-block in cargo
...
Which is apparently not built as part of make check
2012-03-26 13:16:29 +02:00
Marijn Haverbeke
b89a5af2ab
Check in a forgotten new file
2012-03-26 12:54:06 +02:00
Marijn Haverbeke
87e097a853
Disallow ret inside of block functions
...
Also adds proper checking for cont/break being inside a loop.
Closes #1854
Issue #1619
2012-03-26 12:45:47 +02:00
Marijn Haverbeke
e4c141a331
Fix bug in generation of non-generic resource dtors
...
Issue #1944
2012-03-26 11:31:17 +02:00
Niko Matsakis
763142816e
repair the build---also, make try/commit work over both ty/region vars
2012-03-25 13:32:13 -07:00
Jacob Parker
f5c91d10dd
Fixed vim highlighting for \' (and other) escapes in char literals
2012-03-25 16:26:48 -04:00
Patrick Walton
8462c6c831
rustc: Generalize several parts of infer in preparation for using them for region bounds as well
2012-03-24 23:14:45 -07:00
Niko Matsakis
1d7d5c16b3
correct more broken tests
2012-03-24 22:15:34 -07:00
Niko Matsakis
ac4294a176
add test that was failing from tedh
2012-03-24 21:59:16 -07:00
Niko Matsakis
7ae757ff1a
add annotation for variable that used to infer to bot
2012-03-24 21:55:53 -07:00
Niko Matsakis
bf9d714d46
Avoid unifying vars when possible; handle bot (more) correctly
2012-03-24 21:38:43 -07:00
Niko Matsakis
ee5d0f5e3f
new test which features conflicting variance requirements
2012-03-24 21:38:42 -07:00
Patrick Walton
bd6e6e349b
rustc: Stub some region resolution stuff in infer
2012-03-24 21:30:57 -07:00
Patrick Walton
f507b54f19
test: Rename run-pass/simple-regions.rs to run-pass/regions-simple.rs
...
This groups all the region tests under regions-*.
2012-03-24 19:21:51 -07:00
Patrick Walton
8bef2716fe
test: Add a simple test for dangling pointers
2012-03-24 19:00:08 -07:00
Patrick Walton
7c27ec72d1
rustc: Add some simple region checking (no region vars yet)
...
Amazingly, this causes no test cases to fail!
2012-03-24 18:44:05 -07:00
Niko Matsakis
3e385a80d4
prune unused unification code; leave region code that still needs to be ported
2012-03-24 09:22:09 -07:00
Tim Chevalier
aae14e352a
Allow methods to call other methods in the same class
2012-03-23 23:10:45 -07:00
Tim Chevalier
bebdfe8ce8
Add another test for cross-crate method calls
2012-03-23 23:10:45 -07:00
Niko Matsakis
6b84cee5d3
add a few measly comments, remove some dead code
2012-03-23 22:36:37 -07:00
Niko Matsakis
f5edb5ee18
xfail-test regions tests
2012-03-23 22:06:39 -07:00
Niko Matsakis
042c532a08
Implement new inference algorithm.
2012-03-23 21:47:28 -07:00
Tim Chevalier
40443768b1
Fix breakage
2012-03-23 20:53:38 -07:00
Tim Chevalier
8bbd78075f
Handle self correctly when translating classes
...
This change uses the same code for handling the "self" reference for
classes as is already used for impls/ifaces. This allows removing the
extra maybe_self_id argument (which was just for classes) to trans_closure
that I added before. I also rewrote the translation for class ctors so
that it doesn't generate new AST nodes (instead translating directly).
Also changed visit so that it visits class ctors correctly with visit_fn,
and changed typestate to not do return-checking when visiting a class ctor.
2012-03-23 20:37:50 -07:00
Patrick Walton
713b3585c6
rustc: Remove // */
sequence from trans/base.rs; it breaks vi syntax highlighting
2012-03-23 18:21:23 -07:00
Patrick Walton
0eae490669
rustc: Stub a table of borrowings
2012-03-23 17:28:24 -07:00
Patrick Walton
c56910fc9a
rustc: Make region folding not descend into function types
...
Since region parameters are always universally quantified at the function
level, this would be incorrect.
2012-03-23 17:06:24 -07:00
Tim Chevalier
1ffaedac2b
Remove unneeded code
2012-03-23 16:25:10 -07:00
Tim Chevalier
17cd9b4308
Remove ctypes -- it's no longer used.
2012-03-23 16:25:10 -07:00
Tim Chevalier
cb0eeed539
Remove a FIXME and workaround that appear to be obsolete
2012-03-23 16:25:10 -07:00
Tim Chevalier
372673b58c
Remove char::to_lower, char::to_upper, use libc versions instead
...
As per Graydon's comments on #1985 : remove char::to_lower and
char::to_upper. The str versions of these functions now call
libc::tolower and libc::toupper (using wrappers that cast between
char and c_char). Not sure how much better that is, but it at least
makes it clearer that these functions are Unicode-unsafe.
2012-03-23 16:25:10 -07:00
Patrick Walton
cab4f1685b
test: Add a test case that ensures ret &EXPR
works.
2012-03-23 16:18:28 -07:00
Patrick Walton
cba007e6c8
rustc: Fix parsing of ret &EXPR
...
The parser didn't think that `&` could start an expression.
2012-03-23 16:15:58 -07:00
Patrick Walton
7592dae949
test: Fix unresolved name in regions-mock-trans-impls.rs
2012-03-23 15:44:37 -07:00
Patrick Walton
c56ec7b02a
test: Add a version of the "mock-trans" regions test case that uses impls
2012-03-23 15:28:47 -07:00
Patrick Walton
b9c4dbeb33
test: Fix leak in regions-mock-trans
2012-03-23 15:17:34 -07:00
Patrick Walton
df77eb433b
test: Fix whitespace at EOL
2012-03-23 15:05:39 -07:00
Patrick Walton
aa0f25ae31
test: Add a trans.rs-workalike test case for regions
2012-03-23 14:42:39 -07:00
Patrick Walton
7931a61ebb
rustc: Redo region inference to be a bit less broken
2012-03-23 12:22:58 -07:00
Marijn Haverbeke
84019aa0dc
Keep an explicit map of things that have to be spilled
...
This prevents us from spilling locals more than once.
Closes #2040
2012-03-23 16:08:01 +01:00
Marijn Haverbeke
1b81c5112a
Remove last vestiges of old-style intrinsics
...
Closes #2048
2012-03-23 16:08:01 +01:00
Marijn Haverbeke
837478ccb0
Register new snapshot
2012-03-23 16:07:54 +01:00
Marijn Haverbeke
a84b56bc70
Remove more needless context threading in trans
2012-03-23 14:45:47 +01:00
Marijn Haverbeke
5cfbbbc9ed
Revert resolve kludge that was working around #2049
2012-03-23 13:32:00 +01:00
Marijn Haverbeke
3e7a514521
Fix inconsistent-iteration hazard in map.rs
...
Closes #2049
2012-03-23 13:30:29 +01:00
Marijn Haverbeke
683085b3f0
Stop trying to link intrinsics.bc
2012-03-23 12:57:37 +01:00
Marijn Haverbeke
ca71e01bce
Interpret native mods with ABI rust-intrinsic as builtins
2012-03-23 12:52:53 +01:00
Marijn Haverbeke
52d618a99a
Revert removal of intrinsics
...
Oops. We can't do this yet until the next snapshot.
2012-03-23 12:51:20 +01:00
Marijn Haverbeke
c704d5a5d3
Clean up some confused shuffling of def_ids in resolve.rs
2012-03-23 12:38:36 +01:00
Marijn Haverbeke
562afef216
Rename builtin back to intrinsic
...
As per Graydon's request
Issue #1981
2012-03-23 12:21:56 +01:00
Marijn Haverbeke
f5024692d4
Remove support for the old-style intrinsics
...
Closes #2042
Closes #1981
2012-03-23 12:21:55 +01:00
Marijn Haverbeke
0303396f4c
Register snapshot, turn off USE_SNAPSHOT flags
2012-03-23 12:21:46 +01:00
Marijn Haverbeke
6374ffc5f3
Kludge in resolve to be able to land builtins
...
Something strange is happening to hash maps. I'm still investigating but
want to get my snapshot built in the meantime. (Problem only happened on
OS X.)
2012-03-23 11:09:19 +01:00
Marijn Haverbeke
cdb93d70a1
Fix bug in function-instance reuse
...
You can't safely reuse functions that pass a T by move, since they might
zero it out, which will not end well when it doesn't know its precise
size.
2012-03-23 10:49:47 +01:00
Marijn Haverbeke
16ca6e8d7f
Change vector append to no longer rely on an intrinsic
...
Issue #1981
2012-03-23 10:49:47 +01:00
Marijn Haverbeke
0545e4a920
Support [rust_stack] annotation on native functions (crudely)
2012-03-23 10:49:47 +01:00
Marijn Haverbeke
894b7469d6
Replace most uses of intrinsics in core with builtins
...
Issue #1981
2012-03-23 10:49:47 +01:00
Marijn Haverbeke
ea2e379e4f
Implement built-in native modules as an alternative to intrinsics
...
Issue #1981
2012-03-23 10:49:47 +01:00
Tim Chevalier
73a0c17d77
Make cross-crate calls to class methods work
2012-03-22 20:32:47 -07:00
Brian Anderson
f7f1490d6e
rt: Run resource destructors during cycle collection
2012-03-22 19:07:31 -07:00
Brian Anderson
f3fe85dad7
Bump version numbers to 0.2
2012-03-22 15:25:02 -07:00
Graydon Hoare
b224bcf6e1
Add an LLVM-instruction-counting mode to trans.
...
Pipe to xdu to see a trans call graph of generated insns.
2012-03-22 13:44:20 -07:00
Niko Matsakis
dc07280b08
make --enforce-mut-vars always on, add mut annotations to remaining files
2012-03-22 09:58:19 -07:00
Niko Matsakis
b653a18416
add mut decls to rustc and make them mandatory
2012-03-21 21:04:14 -07:00
Brian Anderson
d7be4abdae
rt: Fix valgrind stack hints
2012-03-21 19:10:32 -07:00
Brian Anderson
9ea3bc614e
rt: Shave 16 bytes off the __morestack frame
2012-03-21 19:10:32 -07:00
Brian Anderson
9f89cc9d15
rt: Shave a few instructions off __morestack
2012-03-21 19:10:32 -07:00
Brian Anderson
f5f6135fd0
rt: Stop using large stacks for the main task
2012-03-21 19:10:32 -07:00
Brian Anderson
0639b67290
rt: Use get_task_from_tcb during stack growth calls
2012-03-21 19:10:32 -07:00
Brian Anderson
4ad57f5c39
rt: Add rust_task::get_task_from_tcb
2012-03-21 19:10:32 -07:00
Brian Anderson
08f783ff10
rt: Add a task field to stk_seg and populate it
2012-03-21 19:10:32 -07:00
Brian Anderson
4a0c6c7f41
rt: Add a get_sp_limit function
2012-03-21 19:10:31 -07:00
Brian Anderson
1cb35c9b26
rt: Rename record_sp to record_sp_limit
2012-03-21 19:10:31 -07:00
Brian Anderson
ba322b0a70
rt: Reset the stack limit after catching an exception
...
This wasn't causing problems but it looked wrong
2012-03-21 19:10:31 -07:00
Brian Anderson
b78af4f7c4
rt: Inline a bunch of stack switching code
2012-03-21 19:10:31 -07:00
Brian Anderson
d5968d9f38
rt: Swap the definition of stk_seg::next and prev
2012-03-21 19:10:31 -07:00
Brian Anderson
6115b13dfc
rt: Don't switch to the C stack on the upcall_new_stack fast path
2012-03-21 19:10:31 -07:00
Brian Anderson
8a145a601e
rt: Don't swatch stacks during upcall_del_stack
2012-03-21 19:10:31 -07:00
Graydon Hoare
9ba712fb8b
Every time you don't use a variable, a kitten scowls.
2012-03-21 19:00:52 -07:00
Graydon Hoare
eba5129978
Quiet unused-result error harder.
2012-03-21 18:53:27 -07:00
Graydon Hoare
d28175b916
Upgrade valgrind headers to 3.7, silencing build breakage on FreeBSD.
2012-03-21 18:40:32 -07:00
Graydon Hoare
a9e7bff731
Remove incorrect uses of NVALGRIND, Close #1435 .
2012-03-21 18:21:11 -07:00
Patrick Walton
44bd8da7fd
rustc: Use the right "nxt" function in unify_regions
2012-03-21 16:13:34 -07:00
Brian Anderson
75ee4633eb
rustc: Long lines
2012-03-21 16:10:39 -07:00
Josh Matthews
5835a4cc8e
Merge remote-tracking branch 'mozilla/master'
2012-03-21 19:01:04 -04:00
Patrick Walton
b0f6dad5e3
rustc: Add a function to record region bindings
2012-03-21 15:59:57 -07:00
Josh Matthews
8142438938
Avoid mangling names differently in debug builds to work around a build error. Fix up file name and path debug information, and build one compilation unit for a crate instead of one per source file.
2012-03-21 18:56:36 -04:00
Patrick Walton
c8ab0c1b3b
rustc: Replace region parameters in function return values
2012-03-21 15:22:12 -07:00
Patrick Walton
324f57a180
rustc: Check call and bind expressions using a set of region bindings
2012-03-21 14:47:57 -07:00
Patrick Walton
bdf968c9d9
rustc: Add a version of demand
that takes in a set of region variable bindings
2012-03-21 14:15:43 -07:00
Tim Chevalier
30c272cb3a
methods work
...
Cross-crate method calls don't work yet. Added
run-pass/class-method-cross-crate to test that, but it's xfailed
References to fields within methods don't work yet. Added
run-pass/class-methods to test that, but it's also xfailed
2012-03-21 13:53:21 -07:00
Patrick Walton
3e47442471
rustc: Add region unification functions
2012-03-21 13:28:50 -07:00
Patrick Walton
68e364b54d
rustc: Introduce re_params into the typechecker
...
This is the first step of the region refactoring I need to do in order to handle named regions properly.
2012-03-21 12:21:53 -07:00
Graydon Hoare
071dedde79
Register snapsnots.
2012-03-21 11:46:46 -07:00
Niko Matsakis
7cc0f554ae
add test for commit 9502fb99e0
2012-03-21 08:23:31 -07:00
Marijn Haverbeke
9502fb99e0
Fix bug in vtable resolution
2012-03-21 15:57:23 +01:00