mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-29 14:54:47 +00:00
feat(wasm): copy value to memory
This commit is contained in:
parent
1b98673704
commit
bc94683100
1 changed files with 11 additions and 3 deletions
|
@ -676,6 +676,8 @@ impl<'a> WasmBackend<'a> {
|
||||||
self.code_builder.i32_const(elems.len() as i32);
|
self.code_builder.i32_const(elems.len() as i32);
|
||||||
self.code_builder.i32_store(Align::Bytes4, stack_offset + 4);
|
self.code_builder.i32_store(Align::Bytes4, stack_offset + 4);
|
||||||
|
|
||||||
|
let mut elem_offset = 0;
|
||||||
|
|
||||||
for (i, elem) in elems.iter().enumerate() {
|
for (i, elem) in elems.iter().enumerate() {
|
||||||
let elem_sym = match elem {
|
let elem_sym = match elem {
|
||||||
ListLiteralElement::Literal(lit) => {
|
ListLiteralElement::Literal(lit) => {
|
||||||
|
@ -684,19 +686,25 @@ impl<'a> WasmBackend<'a> {
|
||||||
let debug_name = format!("{:?}_{}", sym, i);
|
let debug_name = format!("{:?}_{}", sym, i);
|
||||||
let elem_sym = self.create_symbol(&debug_name);
|
let elem_sym = self.create_symbol(&debug_name);
|
||||||
let expr = Expr::Literal(*lit);
|
let expr = Expr::Literal(*lit);
|
||||||
|
|
||||||
self.store_expr_value(
|
self.store_expr_value(
|
||||||
elem_sym,
|
elem_sym,
|
||||||
elem_layout,
|
elem_layout,
|
||||||
&expr,
|
&expr,
|
||||||
StoredValueKind::Variable,
|
StoredValueKind::Variable,
|
||||||
);
|
);
|
||||||
|
|
||||||
elem_sym
|
elem_sym
|
||||||
}
|
}
|
||||||
|
|
||||||
ListLiteralElement::Symbol(elem_sym) => *elem_sym,
|
ListLiteralElement::Symbol(elem_sym) => *elem_sym,
|
||||||
};
|
};
|
||||||
todo!(
|
|
||||||
"Copy {:?} to the address stored in heap_local_id, using self.storage.copy_value_to_memory",
|
elem_offset += self.storage.copy_value_to_memory(
|
||||||
elem_sym
|
&mut self.code_builder,
|
||||||
|
heap_local_id,
|
||||||
|
elem_offset,
|
||||||
|
elem_sym,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue