frgot to transition @nameof to slices
Signed-off-by: Jakub Doka <jakub.doka2@gmail.com>
This commit is contained in:
parent
5275a7e0fd
commit
888b38ad4c
|
@ -127,7 +127,7 @@ pub mod backend {
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
mod debug {
|
mod debug {
|
||||||
use {core::fmt::Debug, std::string::String};
|
use core::fmt::Debug;
|
||||||
|
|
||||||
pub fn panicking() -> bool {
|
pub fn panicking() -> bool {
|
||||||
#[cfg(feature = "std")]
|
#[cfg(feature = "std")]
|
||||||
|
@ -141,7 +141,7 @@ mod debug {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(all(debug_assertions, feature = "std"))]
|
#[cfg(all(debug_assertions, feature = "std"))]
|
||||||
pub type Trace = std::rc::Rc<(std::backtrace::Backtrace, String)>;
|
pub type Trace = std::rc::Rc<(std::backtrace::Backtrace, std::string::String)>;
|
||||||
#[cfg(not(all(debug_assertions, feature = "std")))]
|
#[cfg(not(all(debug_assertions, feature = "std")))]
|
||||||
pub type Trace = ();
|
pub type Trace = ();
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,6 @@ use {
|
||||||
ptr::NonNull,
|
ptr::NonNull,
|
||||||
sync::atomic::AtomicUsize,
|
sync::atomic::AtomicUsize,
|
||||||
},
|
},
|
||||||
std::panic,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
pub type Pos = u32;
|
pub type Pos = u32;
|
||||||
|
|
|
@ -31,7 +31,6 @@ use {
|
||||||
format_args as fa, mem,
|
format_args as fa, mem,
|
||||||
},
|
},
|
||||||
hbbytecode::DisasmError,
|
hbbytecode::DisasmError,
|
||||||
std::panic,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const DEFAULT_ACLASS: usize = 0;
|
const DEFAULT_ACLASS: usize = 0;
|
||||||
|
@ -1350,7 +1349,7 @@ impl<'a> Codegen<'a> {
|
||||||
let elem = self.tys.ins.slices[s].elem;
|
let elem = self.tys.ins.slices[s].elem;
|
||||||
let off = self.offset(bs.id, 0);
|
let off = self.offset(bs.id, 0);
|
||||||
let base = self.tys.make_ptr(elem);
|
let base = self.tys.make_ptr(elem);
|
||||||
let bs = std::dbg!(self.load_mem(off, base));
|
let bs = self.load_mem(off, base);
|
||||||
Some(self.offset_ptr(bs, elem, idx.id))
|
Some(self.offset_ptr(bs, elem, idx.id))
|
||||||
}
|
}
|
||||||
ty::Kind::Struct(s) => {
|
ty::Kind::Struct(s) => {
|
||||||
|
@ -1426,18 +1425,24 @@ impl<'a> Codegen<'a> {
|
||||||
let ty = self.ty(ty);
|
let ty = self.ty(ty);
|
||||||
self.gen_inferred_const(ctx, ty::Id::U8, ty.kind())
|
self.gen_inferred_const(ctx, ty::Id::U8, ty.kind())
|
||||||
}
|
}
|
||||||
Expr::Directive { name: "nameof", args: [ty], .. } => {
|
Expr::Directive { pos, name: "nameof", args: [ty], .. } => {
|
||||||
let ty = self.ty(ty);
|
let ty = self.ty(ty);
|
||||||
let mut data = core::mem::take(&mut self.pool.lit_buf);
|
let mut data = core::mem::take(&mut self.pool.lit_buf);
|
||||||
self.tys.name_of(ty, self.files, &mut data);
|
self.tys.name_of(ty, self.files, &mut data);
|
||||||
data.push(0);
|
|
||||||
|
|
||||||
let (global, ty) = self.create_string_global(&data);
|
let (global, ty) = self.create_string_global(&data);
|
||||||
|
|
||||||
|
let len = self.ci.nodes.new_const_lit(ty, data.len() as i64);
|
||||||
data.clear();
|
data.clear();
|
||||||
self.pool.lit_buf = data;
|
self.pool.lit_buf = data;
|
||||||
|
|
||||||
Some(Value::new(global).ty(ty))
|
let slc = self.tys.make_array(ty::Id::U8, ArrayLen::MAX);
|
||||||
|
let mem = self.new_stack(pos, slc);
|
||||||
|
for (off, value) in [(0u32, Value::ptr(global).ty(ty)), (8, len)] {
|
||||||
|
let region = self.offset(mem, off);
|
||||||
|
self.store_mem(region, value.ty, value.id);
|
||||||
|
}
|
||||||
|
Some(Value::ptr(mem).ty(slc))
|
||||||
}
|
}
|
||||||
Expr::Directive { name: "sizeof", args: [ty], .. } => {
|
Expr::Directive { name: "sizeof", args: [ty], .. } => {
|
||||||
let ty = self.ty(ty);
|
let ty = self.ty(ty);
|
||||||
|
|
Loading…
Reference in a new issue