Brian Anderson
d0786fdffc
core::rt Wire up task-local storage to the new scheduler
2013-04-22 13:05:16 -07:00
Brian Anderson
d7f5e437a2
core::rt: Add the local heap to newsched tasks
...
Reusing the existing boxed_region implementation from the runtime
2013-04-21 19:03:54 -07:00
Brian Anderson
f9069baa70
core::rt: Add LocalServices for thread-local language services
...
Things like the GC heap and unwinding are desirable everywhere the language
might be used, not just in tasks. All Rust code should have access to
LocalServices.
2013-04-21 16:28:19 -07:00
Alex Crichton
13537d2e0c
core: remove unused 'mut' variables
2013-04-20 21:02:38 -04:00
Brian Anderson
4eff3130c5
core::rt:: Implement Reader/Writer for MemReader/MemWriter
2013-04-20 17:25:00 -07:00
Brian Anderson
fa478f5775
core: Speed up a test case
2013-04-20 16:15:32 -07:00
Brian Anderson
d818ea8154
core::rt: Listener constructors are called and return a
2013-04-20 15:55:37 -07:00
Brian Anderson
bcb3cfb8ce
core::rt: Improve docs for run_in_newsched_task testing function
2013-04-20 15:55:07 -07:00
Brian Anderson
6e17202ff4
core::rt: Add next_test_ip4
for generating test addresses
2013-04-20 14:50:06 -07:00
Brian Anderson
a11c032f36
core::rt: Fix a broken uvio test
2013-04-20 02:16:21 -07:00
Brian Anderson
e564fc7f6b
core::rt: Don't directly create scheduler types in I/O tests
...
There are some better abstractions for this now
2013-04-20 01:55:10 -07:00
Brian Anderson
1a7561be4d
core::rt: Remove redundant copy of run_in_newsched_task
2013-04-20 01:37:59 -07:00
Brian Anderson
eac629bf5c
core::rt: Unignore some networking tests
...
These should work now, I hope
2013-04-20 01:32:08 -07:00
Brian Anderson
d24a3a4b01
core::rt: Use generated port numbers in tests
2013-04-20 01:16:06 -07:00
Brian Anderson
744ba627f3
core::rt: Add a test mod and put run_in_newsched_task there
2013-04-20 00:33:49 -07:00
Alex Crichton
98dfeb173f
core: clean up tests (mostly unused unsafe blocks)
2013-04-19 23:23:23 -04:00
Brian Anderson
6a5c4f68c2
core::rt: Just some poking at the I/O docs
2013-04-19 18:47:31 -07:00
Brian Anderson
e47ee779cd
wip
2013-04-19 15:18:38 -07:00
Brian Anderson
7270fadfcc
core::rt: Rename Closeable to Close, Seekable to Seek, blocking to native
2013-04-19 14:58:21 -07:00
Brian Anderson
e782e1f371
Tidy
2013-04-19 12:05:19 -07:00
Brian Anderson
b57611d10c
core::rt: Simplify some scheduler operations
2013-04-19 12:05:19 -07:00
Brian Anderson
eddd817bf0
core::rt: Add another context switching operation to the scheduler
...
`switch_running_tasks_and_then` does a context switch to another
task then immediatly runs a closure.
2013-04-19 12:05:18 -07:00
Brian Anderson
d261bb32d9
core: More tweaks to the thread-local scheduler interface
2013-04-19 12:05:18 -07:00
Brian Anderson
15ece0c23e
core: Wire up spawn
to the new scheduler
...
It will check which scheduler it is running under and create the
correct type of task as appropriate. Most options aren't supported
but basic spawning works.
2013-04-19 12:05:18 -07:00
Brian Anderson
b96765179e
core: Add rt::context for figuring out what runtime services are available
...
Conflicts:
src/libcore/rt/sched/mod.rs
2013-04-19 12:05:18 -07:00
Brian Anderson
c44d7a6486
core::rt: Declare large parts of the I/O API
2013-04-19 12:05:18 -07:00
bors
16652c9c17
auto merge of #5909 : brson/rust/rt4, r=graydon
...
This is just a bunch of minor changes and simplifications to the structure of core::rt. It makes ownership of the ~Scheduler more strict (though it is still mutably aliased sometimes), turns the scheduler cleanup_jobs vector into just a single job, shunts the thread-local scheduler code off to its own file.
2013-04-17 20:42:58 -07:00
bors
fdb4ef321e
auto merge of #5726 : brson/rust/struct-return, r=brson
...
r? @nikomatsakis
This doesn't completely fix the x86 ABI for structs, but it does fix some cases. On linux, structs appear to be returned correctly now. On windows, structs are only returned by pointer when they are greater than 8 bytes. That scenario works now.
In the case where the struct is less than 8 bytes our generated code looks peculiar. When returning a pair of u16, C packs both variables into %eax to return them. Our generated code though expects to find one of the pair in %ax and the other in %dx. Similar for u8. I haven't looked into it yet.
There appears to also be struct passing problems on linux, where my `extern-pass-TwoU8s` and `extern-pass-TwoU16s` tests are failing.
2013-04-17 18:45:58 -07:00
Brian Anderson
a5ddc00982
rustc: Use an out pointer to return structs in x86 C ABI. #5347
...
This Adds a bunch of tests for passing and returning structs
of various sizes to C. It fixes the struct return rules on unix,
and on windows for structs of size > 8 bytes. Struct passing
on unix for structs under a certain size appears to still be broken.
2013-04-17 15:49:19 -07:00
Brian Anderson
7bfd0e5035
Merge remote-tracking branch 'brson/sched-cleanup'
...
Conflicts:
src/libcore/rt/sched/mod.rs
2013-04-16 11:23:13 -07:00
Brian Anderson
1f94364aef
core::rt: Clean up some more hacks
2013-04-15 18:56:39 -07:00
Brian Anderson
ed74ac169e
core::rt: Narrow down the unsafety of the thread-local scheduler
...
Only when borrowing the I/O implementation do we need unsafety
2013-04-15 18:54:02 -07:00
Brian Anderson
68583a25a0
core::rt: Restructure context switches to take ownership of the Scheduler
...
In order to do a context switch you have to give up ownership of the scheduler,
effectively passing it to the next execution context. This could help avoid
some situations here tasks retain unsafe pointers to schedulers between context
switches, across which they may have changed threads.
There are still a number of uses of unsafe scheduler pointers.
2013-04-15 17:45:34 -07:00
Brian Anderson
ebefe07792
core::rt: Make Scheduler::unsafe_local return a fabricated region pointer
...
Instead of taking a closure. It's unsafe either way. Rename it to unsafe_local_borrow.
2013-04-15 16:00:15 -07:00
Brian Anderson
473b4d19ad
core::rt: Rename Scheduler::local to Scheduler::unsafe_local
2013-04-15 15:32:43 -07:00
Brian Anderson
3b8a354c21
core::rt: A little bit of cleanup to thread-local scheduler
2013-04-15 15:25:29 -07:00
Brian Anderson
1f8ebb6a8e
core::rt: Move thread-local scheduler to its own module
2013-04-15 15:18:49 -07:00
Brian Anderson
4f1dd1fd21
core::rt: Fix two incorrect uses of the thread-local scheduler
...
These would not be threadsafe
2013-04-15 15:13:36 -07:00
Brian Anderson
93757d8185
core::rt: Clean up the thread-local scheduler code
...
Remove the ThreadLocalScheduler type in favor of functions.
Move everything into the sched::local module.
2013-04-14 21:53:37 -07:00
Brian Anderson
a2e5827866
core::rt: All context switches are followed by a cleanup action
2013-04-14 20:49:22 -07:00
Brian Anderson
5f52aecb1e
core::rt: Schedulers only need a single cleanup_job at a time
...
Each context switch has up to one cleanup job and it is always
executed immediately after the context switch.
2013-04-14 19:24:43 -07:00
Brian Anderson
6b084bad25
core::rt: Insert calls to run_cleanup_tasks after all context switches
2013-04-14 18:56:22 -07:00
Brian Anderson
1cb78e736f
core::rt: Rename block_running_task_and_then to deschedul_...
2013-04-14 16:12:30 -07:00
Brian Anderson
8e966216c7
core::rt: Restructure task_from_last_cleanup_job to borrow correctly
...
We need a number of mutable references to contexts so name it
`get_contexts` and return a tuple of all of them.
2013-04-14 16:05:16 -07:00
Alex Crichton
d9595d1737
core: remove unnecessary unsafe blocks/functions
2013-04-14 01:15:46 -04:00
Niko Matsakis
61b9e0ebfa
core: changes in response to #5656
2013-04-10 17:32:03 -07:00
Jyun-Yan You
fdf48a7b52
rt: improve mips backend
2013-04-04 18:53:58 +08:00
Graydon Hoare
0647a0fc28
remove stray mode on callback, seems to not change anything
2013-04-01 14:18:07 -07:00
Luqman Aden
eadd358b2a
Correct type signature for start lang item.
2013-03-30 19:59:21 -07:00
Niko Matsakis
6965fe4bce
Add AbiSet and integrate it into the AST.
...
I believe this patch incorporates all expected syntax changes from extern
function reform (#3678 ). You can now write things like:
extern "<abi>" fn foo(s: S) -> T { ... }
extern "<abi>" mod { ... }
extern "<abi>" fn(S) -> T
The ABI for foreign functions is taken from this syntax (rather than from an
annotation). We support the full ABI specification I described on the mailing
list. The correct ABI is chosen based on the target architecture.
Calls by pointer to C functions are not yet supported, and the Rust type of
crust fns is still *u8.
2013-03-29 18:36:20 -07:00
Patrick Walton
1e91595520
librustc: Remove fail_unless!
2013-03-29 16:39:08 -07:00
bors
5da9e12778
auto merge of #5570 : alexcrichton/rust/fix-unused-imports, r=sanxiyn
...
Before it wouldn't warn about unused imports in the list if something in the list was used. These commits fix that case, add a test, and remove all unused imports in lists of imports throughout the compiler.
2013-03-29 05:57:44 -07:00
Young-il Choi
e6f2d7a48c
libcore: language change minor fix for ARM & MIPS
2013-03-29 15:46:13 +09:00
Alex Crichton
be57d745d2
Removing unused imports
2013-03-28 23:56:46 -04:00
Patrick Walton
e5dda811a9
librustc: Allow expr_repeat to be used with any vstore
2013-03-27 13:53:03 -07:00
Patrick Walton
8b56a8380b
librustc: Modify all code to use new lifetime binder syntax
2013-03-26 21:30:17 -07:00
Patrick Walton
142dbd65da
librustc: Remove all uses of the old [T * N]
fixed-length vector syntax
2013-03-26 21:29:34 -07:00
Alex Crichton
fa7772893a
Remove unused imports throughout
2013-03-26 19:20:02 -04:00
Brian Anderson
e5f8026eba
core: Make sure every module at least has a one-line description
2013-03-26 11:48:22 -07:00
Brian Anderson
30d4124a37
Merge remote-tracking branch 'brson/rt'
...
Conflicts:
src/libcore/rt/context.rs
src/libcore/rt/sched.rs
src/libcore/rt/thread.rs
src/libcore/rt/uv.rs
2013-03-25 12:28:54 -07:00
Patrick Walton
85c9fc6f8f
librustc: Remove the const
declaration form everywhere
2013-03-22 22:24:35 -07:00
Patrick Walton
fa70709e07
libsyntax: Stop parsing pure
and static
2013-03-22 22:24:33 -07:00
Patrick Walton
be9bddd463
libcore: Remove pure
from libcore. rs=depure
2013-03-22 10:29:17 -07:00
Patrick Walton
4634f7edae
librustc: Remove all uses of static
from functions. rs=destatic
2013-03-22 10:27:39 -07:00
Marvin Löbel
9d9a209e9a
back-renamed slice_DBG_BRWD, slice_V_DBG_BRWD -> slice, slice_DBG_UNIQ -> slice_unique
2013-03-21 14:05:57 +01:00
Marvin Löbel
a7d296f24c
renamed str::view -> slice_DBG_BRWD
...
renamed str::slice -> slice_DBG_UNIQ
changed vec slice method -> to_owned()
renamed vec view method -> slice_V_DBG_BRWD
2013-03-21 01:50:32 +01:00
Patrick Walton
ca3bc644f4
libcore: Make a couple of constructors public. rs=testfixing
2013-03-19 20:37:53 -07:00
Patrick Walton
2e7ec80bcc
librustc: Enforce privacy for static methods.
...
This starts moving a bunch of privacy checks into the privacy
checking phase and out of resolve.
2013-03-19 13:40:48 -07:00
Patrick Walton
352c070365
librustc: Convert all uses of old lifetime notation to new lifetime notation. rs=delifetiming
2013-03-18 17:21:14 -07:00
Brian Anderson
5af5766512
core: Initialize global state lazily in the Scheduler ctor
...
I don't want any global one-time initalization functions because
that will make embedding harder.
2013-03-18 17:00:35 -07:00
Brian Anderson
044703435b
Add a way to run the test suite with the new scheduler
...
TESTARGS=--newrt make check-stage1-rpass
Conflicts:
src/rt/rustrt.def.in
2013-03-18 17:00:35 -07:00
Brian Anderson
a882554a78
core: Refactor uv bindings
...
I can already see these are going to get massive. Putting them into multiple
files.
2013-03-18 16:59:37 -07:00
Brian Anderson
7ef54c7ecd
core: Begin uv file system bindings
2013-03-18 16:59:37 -07:00
Brian Anderson
57e85b5f94
core: Add rt::io and start sketching the API
2013-03-18 16:59:37 -07:00
Brian Anderson
9a075f264a
core: Rename rt::io to rt::rtio
...
This is an internal interface. I want to use rt::io for public interfaces.
2013-03-18 16:59:37 -07:00
Brian Anderson
42cba98509
core: Convert some multiline statements to single-line
2013-03-18 16:59:37 -07:00
Brian Anderson
54bb7226e1
core: Simplify uvll bindings and strip out currently-unused bits
...
No more mapping uv structs to Rust structs
2013-03-18 16:59:37 -07:00
Brian Anderson
723d2247c1
core: Don't use printf in rtdebug!
...
The bots were showing a segfault that I can't reproduce. Assuming it's
varargs related so let's not use printf
2013-03-18 16:59:11 -07:00
Brian Anderson
d30c758974
Give core::rt and std::net their own uvll bindings
...
I intend to do some big refactoring and don't want to deal w/ std just now
2013-03-18 16:59:11 -07:00
Brian Anderson
e8ddef93da
core: Cleanup rt::context
2013-03-18 16:59:10 -07:00
Brian Anderson
63d18658c1
rt: Add RUST_DEBUG_MEM to rust_env to avoid races
2013-03-16 14:25:44 -07:00
ILyoan
1a6a37e01a
Fix an android compilation fail
2013-03-15 15:35:39 +09:00
Patrick Walton
58f248d923
test: Fix tests. rs=tests
2013-03-13 20:08:35 -07:00
Niko Matsakis
efc7f82bc4
Revamp foreign code not to consider the Rust modes. This requires
...
adjusting a few foreign functions that were declared with by-ref
mode. This also allows us to remove by-val mode in the near future.
With copy mode, though, we have to be careful because Rust will implicitly pass
somethings by pointer but this may not be the C ABI rules. For example, rust
will pass a struct Foo as a Foo*. So I added some code into the adapters to
fix this (though the C ABI rules may put the pointer back, oh well).
This patch also includes a lint mode for the use of by-ref mode
in foreign functions as the semantics of this have changed.
2013-03-13 16:59:37 -04:00
Brian Anderson
806732a70b
core: Turn off rtdebug logging
2013-03-12 13:05:45 -07:00
Brian Anderson
e28d4b3516
core: Add context switching for ARM and MIPS
...
ARM definitely compiles
2013-03-11 23:33:05 -07:00
Brian Anderson
676e0290ed
core: Add rt mod and add the new scheduler code
2013-03-11 19:44:29 -07:00