Skip to content

Commit

Permalink
Rollup merge of rust-lang#55889 - RalfJung:global-alloc, r=alexcrichton
Browse files Browse the repository at this point in the history
global allocators: add a few comments

These comments answer some questions that came up when I tried to understand how the control flow works for the global allocator, `Global` and `System`.

r? @alexcrichton
  • Loading branch information
kennytm committed Nov 13, 2018
2 parents c246a29 + 075983c commit 99986a5
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/liballoc/alloc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ use core::usize;
pub use core::alloc::*;

extern "Rust" {
// These are the magic symbols to call the global allocator. rustc generates
// them from the `#[global_allocator]` attribute if there is one, or uses the
// default implementations in libstd (`__rdl_alloc` etc in `src/libstd/alloc.rs`)
// otherwise.
#[allocator]
#[rustc_allocator_nounwind]
fn __rust_alloc(size: usize, align: usize) -> *mut u8;
Expand Down
5 changes: 5 additions & 0 deletions src/libstd/alloc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ pub use alloc_crate::alloc::*;
#[derive(Debug, Copy, Clone)]
pub struct System;

// The Alloc impl just forwards to the GlobalAlloc impl, which is in `std::sys::*::alloc`.
#[unstable(feature = "allocator_api", issue = "32838")]
unsafe impl Alloc for System {
#[inline]
Expand Down Expand Up @@ -226,6 +227,10 @@ pub fn rust_oom(layout: Layout) -> ! {
#[unstable(feature = "alloc_internals", issue = "0")]
pub mod __default_lib_allocator {
use super::{System, Layout, GlobalAlloc};
// These magic symbol names are used as a fallback for implementing the
// `__rust_alloc` etc symbols (see `src/liballoc/alloc.rs) when there is
// no `#[global_allocator]` attribute.

// for symbol names src/librustc/middle/allocator.rs
// for signatures src/librustc_allocator/lib.rs

Expand Down

0 comments on commit 99986a5

Please sign in to comment.