1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
#![allow(incomplete_features)] #![feature(asm)] #![feature(const_fn)] #![feature(integer_atomics)] #![feature(drain_filter)] #![feature(nll)] #![feature(box_syntax)] #![feature(maybe_uninit_ref)] #![feature(maybe_uninit_extra)] #![feature(get_mut_unchecked)] #![feature(arbitrary_self_types)] #![feature(associated_type_defaults)] #![feature(specialization)] #![feature(trait_alias)] //! Memory Management ToolKit (MMTk) is a portable and high performance memory manager //! that includes various garbage collection algorithms and provides clean and efficient //! interfaces to cooperate with language implementations. MMTk features highly modular //! and highly reusable designs. It includes components such as allocators, spaces and //! work packets that GC implementers can choose from to compose their own GC plan easily. //! //! Logically, this crate includes these major parts: //! * GC components: //! * [Allocators](util/alloc/allocator/trait.Allocator.html): handlers of allocation requests which allocate objects to the bound space. //! * [Policies](policy/space/trait.Space.html): definitions of semantics and behaviors for memory regions. //! Each space is an instance of a policy, and takes up a unique proportion of the heap. //! * [Work packets](scheduler/work/trait.GCWork.html): units of GC work scheduled by the MMTk's scheduler. //! * [GC plans](plan/global/trait.Plan.html): GC algorithms composed from components. //! * [Heap implementations](util/heap/index.html): the underlying implementations of memory resources that support spaces. //! * [Scheduler](scheduler/scheduler/struct.Scheduler.html): the MMTk scheduler to allow flexible and parallel execution of GC work. //! * Interfaces: bi-directional interfaces between MMTk and language implementations //! i.e. [the memory manager API](memory_manager/index.html) that allows a language's memory manager to use MMTk //! and [the VMBinding trait](vm/trait.VMBinding.html) that allows MMTk to call the language implementation. #[macro_use] extern crate custom_derive; #[macro_use] extern crate enum_derive; extern crate libc; #[macro_use] extern crate lazy_static; #[macro_use] extern crate log; #[cfg(target = "x86_64-unknown-linux-gnu")] extern crate atomic; extern crate atomic_traits; extern crate crossbeam_deque; extern crate num_cpus; #[macro_use] extern crate downcast_rs; #[macro_use] pub mod util; mod mm; mod mmtk; pub mod plan; pub mod policy; pub mod scheduler; pub mod vm; pub use crate::mm::memory_manager; pub use crate::mmtk::MMTK; pub use crate::plan::{ AllocationSemantics, CopyContext, Mutator, MutatorContext, Plan, TraceLocal, TransitiveClosure, };