about summary refs log tree commit diff
path: root/src/libstd/unstable/raw.rs
AgeCommit message (Collapse)AuthorLines
2014-02-23std: Move raw to std::rawBrian Anderson-95/+0
Issue #1457
2014-02-13Remove two allocations from spawning a green taskAlex Crichton-0/+6
Two unfortunate allocations were wrapping a proc() in a proc() with GreenTask::build_start_wrapper, and then boxing this proc in a ~proc() inside of Context::new(). Both of these allocations were a direct result from two conditions: 1. The Context::new() function has a nice api of taking a procedure argument to start up a new context with. This inherently required an allocation by build_start_wrapper because extra code needed to be run around the edges of a user-provided proc() for a new task. 2. The initial bootstrap code only understood how to pass one argument to the next function. By modifying the assembly and entry points to understand more than one argument, more information is passed through in registers instead of allocating a pointer-sized context. This is sadly where I end up throwing mips under a bus because I have no idea what's going on in the mips context switching code and don't know how to modify it. Closes #7767 cc #11389
2014-02-13Register new snapshotsAlex Crichton-13/+0
2014-02-07rm out-of-date comment from std::unstable::rawDaniel Micay-3/+0
2014-02-07remove type descriptors from proc and @TDaniel Micay-0/+12
This also drops support for the managed pointer POISON_ON_FREE feature as it's not worth adding back the support for it. After a snapshot, the leftovers can be removed.
2014-02-02std,extra: remove use of & support for @[].Huon Wilson-1/+0
2014-02-02libextra: Remove `@str` from all the librariesPatrick Walton-1/+0
2014-01-14add implementation of `Repr` for `~[T]`Daniel Micay-0/+1
2013-12-11Make 'self lifetime illegal.Erik Price-2/+2
Also remove all instances of 'self within the codebase. This fixes #10889.
2013-11-19libstd: Change all uses of `&fn(A)->B` over to `|A|->B` in libstdPatrick Walton-2/+2
2013-10-30Prepared `std::sys` for removal, and made `begin_unwind` simplerMarvin Löbel-0/+30
- `begin_unwind` is now generic over any `T: Any + Send`. - Every value you fail with gets boxed as an `~Any`. - Because of implementation details, `&'static str` and `~str` are still handled specially behind the scenes. - Changed the big macro source string in libsyntax to a raw string literal, and enabled doc comments there.
2013-10-26Rewrite boxed_region/memory_region in RustAlex Crichton-2/+2
This drops more of the old C++ runtime to rather be written in rust. A few features were lost along the way, but hopefully not too many. The main loss is that there are no longer backtraces associated with allocations (rust doesn't have a way of acquiring those just yet). Other than that though, I believe that the rest of the debugging utilities made their way over into rust. Closes #8704
2013-10-23Removed Unnecessary comments and white spaces #4386reedlepee-4/+0
2013-10-23Making fields in std and extra : private #4386reedlepee-1/+5
2013-09-06Flag the Repr::repr function with #[inline]Alex Crichton-0/+1
This allows cross-crate inlining which is *very* good because this is called a lot throughout libstd (even when libstd is inlined across crates).
2013-08-26Rewrite pass management with LLVMAlex Crichton-0/+1
Beforehand, it was unclear whether rust was performing the "recommended set" of optimizations provided by LLVM for code. This commit changes the way we run passes to closely mirror that of clang, which in theory does it correctly. The notable changes include: * Passes are no longer explicitly added one by one. This would be difficult to keep up with as LLVM changes and we don't guaranteed always know the best order in which to run passes * Passes are now managed by LLVM's PassManagerBuilder object. This is then used to populate the various pass managers run. * We now run both a FunctionPassManager and a module-wide PassManager. This is what clang does, and I presume that we *may* see a speed boost from the module-wide passes just having to do less work. I have no measured this. * The codegen pass manager has been extracted to its own separate pass manager to not get mixed up with the other passes * All pass managers now include passes for target-specific data layout and analysis passes Some new features include: * You can now print all passes being run with `-Z print-llvm-passes` * When specifying passes via `--passes`, the passes are now appended to the default list of passes instead of overwriting them. * The output of `--passes list` is now generated by LLVM instead of maintaining a list of passes ourselves * Loop vectorization is turned on by default as an optimization pass and can be disabled with `-Z no-vectorize-loops`
2013-08-12Implement formatting arguments for strings and integersAlex Crichton-0/+1
Closes #1651
2013-07-26Consolidate raw representations of rust valuesAlex Crichton-0/+61
This moves the raw struct layout of closures, vectors, boxes, and strings into a new `unstable::raw` module. This is meant to be a centralized location to find information for the layout of these values. As safe method, `repr`, is provided to convert a rust value to its raw representation. Unsafe methods to convert back are not provided because they are rarely used and too numerous to write an implementation for each (not much of a common pattern).