- let cell = &frame.locals[local].layout;
- if cell.get().is_none() {
- let layout = ::interpret::operand::from_known_layout(layout, || {
- let local_ty = frame.mir.local_decls[local].ty;
- let local_ty = self.monomorphize_with_substs(local_ty, frame.instance.substs);
- self.layout_of(local_ty)
- })?;
- cell.set(Some(layout));
+ match frame.locals[local].layout.get() {
+ None => {
+ let layout = ::interpret::operand::from_known_layout(layout, || {
+ let local_ty = frame.mir.local_decls[local].ty;
+ let local_ty = self.monomorphize_with_substs(local_ty, frame.instance.substs);
+ self.layout_of(local_ty)
+ })?;
+ frame.locals[local].layout.set(Some(layout));
+ Ok(layout)
+ }
+ Some(layout) => Ok(layout),