Add a new kind of instruction format that keeps all of its value arguments in a value list. These value lists are all allocated out of the dfg.value_lists memory pool. Instruction formats with the value_list property set store *all* of their value arguments in a single value list. There is no distinction between fixed arguments and variable arguments. Change the Call instruction format to use the value list representation for its arguments. This change is only the beginning. The intent is to eliminate the boxed_storage instruction formats completely. Value lists use less memory, and when the transition is complete, InstructionData will have a trivial Drop implementation.
32 lines
956 B
Rust
32 lines
956 B
Rust
//! Representation of Cretonne IL functions.
|
|
|
|
pub mod types;
|
|
pub mod entities;
|
|
pub mod condcodes;
|
|
pub mod immediates;
|
|
pub mod instructions;
|
|
pub mod stackslot;
|
|
pub mod jumptable;
|
|
pub mod dfg;
|
|
pub mod layout;
|
|
pub mod function;
|
|
mod funcname;
|
|
mod extfunc;
|
|
mod builder;
|
|
mod valueloc;
|
|
mod progpoint;
|
|
|
|
pub use ir::funcname::FunctionName;
|
|
pub use ir::extfunc::{Signature, ArgumentType, ArgumentExtension, ExtFuncData};
|
|
pub use ir::types::Type;
|
|
pub use ir::entities::{Ebb, Inst, Value, StackSlot, JumpTable, FuncRef, SigRef};
|
|
pub use ir::instructions::{Opcode, InstructionData, VariableArgs, ValueList, ValueListPool};
|
|
pub use ir::stackslot::StackSlotData;
|
|
pub use ir::jumptable::JumpTableData;
|
|
pub use ir::valueloc::{ValueLoc, ArgumentLoc};
|
|
pub use ir::dfg::{DataFlowGraph, ValueDef};
|
|
pub use ir::layout::{Layout, Cursor};
|
|
pub use ir::function::Function;
|
|
pub use ir::builder::InstBuilder;
|
|
pub use ir::progpoint::{ProgramPoint, ProgramOrder, ExpandedProgramPoint};
|