Add a compilation context struct.

This will provide main entry points for compiling functions, and it
serves as a place for keeping data structures that should be preserved
between function compilations to reduce allocator thrashing.

So far, Context is just basic scaffolding. More to be added.
This commit is contained in:
Jakob Stoklund Olesen
2017-02-17 11:57:32 -08:00
parent e60d7f179c
commit 1992890f85
2 changed files with 36 additions and 11 deletions

View File

@@ -0,0 +1,23 @@
//! Cretonne compilation context and main entry point.
//!
//! When compiling many small functions, it is important to avoid repeatedly allocating and
//! deallocating the data structures needed for compilation. The `Context` struct is used to hold
//! on to memory allocations between function compilations.
use ir::Function;
/// Persistent data structures and compilation pipeline.
pub struct Context {
/// The function we're compiling.
pub func: Function,
}
impl Context {
/// Allocate a new compilation context.
///
/// The returned instance should be reused for compiling multiple functions in order to avoid
/// needless allocator thrashing.
pub fn new() -> Context {
Context { func: Function::new() }
}
}