fix compilation bug and expand enum derives

This commit is contained in:
Brendan Hansknecht 2022-02-17 16:43:12 -08:00
parent aa1c0c11b2
commit d33c02febd

View file

@ -16,13 +16,13 @@ use RegStorage::*;
use StackStorage::*; use StackStorage::*;
use Storage::*; use Storage::*;
#[derive(Clone, Debug, PartialEq)] #[derive(Copy, Clone, Debug, PartialEq, Eq)]
enum RegStorage<GeneralReg: RegTrait, FloatReg: RegTrait> { enum RegStorage<GeneralReg: RegTrait, FloatReg: RegTrait> {
General(GeneralReg), General(GeneralReg),
Float(FloatReg), Float(FloatReg),
} }
#[derive(Clone, Debug, PartialEq)] #[derive(Copy, Clone, Debug, PartialEq, Eq)]
enum StackStorage<GeneralReg: RegTrait, FloatReg: RegTrait> { enum StackStorage<GeneralReg: RegTrait, FloatReg: RegTrait> {
// Primitives are 8 bytes or less. That generally live in registers but can move stored on the stack. // Primitives are 8 bytes or less. That generally live in registers but can move stored on the stack.
// Their data must always be 8 byte aligned and will be moved as a block. // Their data must always be 8 byte aligned and will be moved as a block.
@ -59,7 +59,7 @@ enum StackStorage<GeneralReg: RegTrait, FloatReg: RegTrait> {
}, },
} }
#[derive(Clone, Debug, PartialEq)] #[derive(Copy, Clone, Debug, PartialEq, Eq)]
enum Storage<GeneralReg: RegTrait, FloatReg: RegTrait> { enum Storage<GeneralReg: RegTrait, FloatReg: RegTrait> {
Reg(RegStorage<GeneralReg, FloatReg>), Reg(RegStorage<GeneralReg, FloatReg>),
Stack(StackStorage<GeneralReg, FloatReg>), Stack(StackStorage<GeneralReg, FloatReg>),
@ -356,7 +356,7 @@ impl<
index: u64, index: u64,
field_layouts: &'a [Layout<'a>], field_layouts: &'a [Layout<'a>],
) { ) {
debug_assert!(index < field_layouts.len()); debug_assert!(index < field_layouts.len() as u64);
let storage = if let Some(storage) = self.symbol_storage_map.get(structure) { let storage = if let Some(storage) = self.symbol_storage_map.get(structure) {
storage storage
} else { } else {