about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libstd/rt/unwind.rs2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/libstd/rt/unwind.rs b/src/libstd/rt/unwind.rs
index 3a07e8c373b..ffe254574eb 100644
--- a/src/libstd/rt/unwind.rs
+++ b/src/libstd/rt/unwind.rs
@@ -364,6 +364,7 @@ pub mod eabi {
 /// This is the entry point of unwinding for things like lang items and such.
 /// The arguments are normally generated by the compiler, and need to
 /// have static lifetimes.
+#[inline(never)] #[cold] // this is the slow path, please never inline this
 pub fn begin_unwind_raw(msg: *c_char, file: *c_char, line: size_t) -> ! {
     #[inline]
     fn static_char_ptr(p: *c_char) -> &'static str {
@@ -381,6 +382,7 @@ pub fn begin_unwind_raw(msg: *c_char, file: *c_char, line: size_t) -> ! {
 }
 
 /// This is the entry point of unwinding for fail!() and assert!().
+#[inline(never)] #[cold] // this is the slow path, please never inline this
 pub fn begin_unwind<M: Any + Send>(msg: M, file: &'static str, line: uint) -> ! {
     // Note that this should be the only allocation performed in this block.
     // Currently this means that fail!() on OOM will invoke this code path,