Skip to content

Commit 7447b6c

Browse files
author
jeanmon
committed
7080: several bug fixes
1 parent edd6d3f commit 7447b6c

File tree

4 files changed

+12
-7
lines changed

4 files changed

+12
-7
lines changed

barretenberg/cpp/pil/avm/mem.pil

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ namespace mem(256);
172172
// The new column one_min_inv is set to 1 - (r_in_tag - tag)^(-1) when tag_err == 1
173173
// but must be set to 0 when tags are matching and tag_err = 0
174174
#[MEM_IN_TAG_CONSISTENCY_1]
175-
(1 - skip_check_tag) * (1 - rw) * ((r_in_tag - tag) * (1 - one_min_inv) - tag_err) = 0;
175+
tag * (1 - skip_check_tag) * (1 - rw) * ((r_in_tag - tag) * (1 - one_min_inv) - tag_err) = 0;
176176
#[MEM_IN_TAG_CONSISTENCY_2]
177177
(1 - tag_err) * one_min_inv = 0;
178178

barretenberg/cpp/src/barretenberg/relations/generated/avm/mem.hpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ template <typename FF_> class memImpl {
112112

113113
static constexpr std::array<size_t, 41> SUBRELATION_PARTIAL_LENGTHS{
114114
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 4, 3, 4, 3, 4, 3, 3,
115-
3, 4, 4, 4, 4, 4, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
115+
3, 4, 4, 4, 4, 4, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
116116
};
117117

118118
template <typename ContainerOverSubrelations, typename AllEntities>
@@ -364,7 +364,7 @@ template <typename FF_> class memImpl {
364364
{
365365
Avm_DECLARE_VIEWS(27);
366366

367-
auto tmp = (((-mem_skip_check_tag + FF(1)) * (-mem_rw + FF(1))) *
367+
auto tmp = (((mem_tag * (-mem_skip_check_tag + FF(1))) * (-mem_rw + FF(1))) *
368368
(((mem_r_in_tag - mem_tag) * (-mem_one_min_inv + FF(1))) - mem_tag_err));
369369
tmp *= scaling_factor;
370370
std::get<27>(evals) += tmp;

barretenberg/cpp/src/barretenberg/vm/avm_trace/avm_mem_trace.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ bool AvmMemTraceBuilder::load_from_mem_trace(uint8_t space_id,
150150
AvmMemoryTag m_tag = mem_space.contains(addr) ? mem_space.at(addr).tag : AvmMemoryTag::U0;
151151

152152
if (m_tag == AvmMemoryTag::U0 || m_tag == r_in_tag) {
153-
insert_in_mem_trace(space_id, clk, sub_clk, addr, val, r_in_tag, r_in_tag, w_in_tag, false);
153+
insert_in_mem_trace(space_id, clk, sub_clk, addr, val, m_tag, r_in_tag, w_in_tag, false);
154154
return true;
155155
}
156156

barretenberg/cpp/src/barretenberg/vm/avm_trace/avm_trace.cpp

+8-3
Original file line numberDiff line numberDiff line change
@@ -2678,7 +2678,7 @@ void AvmTraceBuilder::op_call([[maybe_unused]] uint8_t indirect,
26782678
.main_mem_addr_a = read_ind_gas_offset.val,
26792679
.main_mem_addr_b = addr_offset,
26802680
.main_mem_addr_c = read_ind_args_offset.val,
2681-
.main_pc = FF(pc++),
2681+
.main_pc = FF(pc),
26822682
.main_r_in_tag = FF(static_cast<uint32_t>(AvmMemoryTag::FF)),
26832683
.main_sel_mem_op_a = FF(1),
26842684
.main_sel_mem_op_b = FF(1),
@@ -2725,10 +2725,13 @@ void AvmTraceBuilder::op_call([[maybe_unused]] uint8_t indirect,
27252725
AvmMemoryTag::FF,
27262726
internal_return_ptr,
27272727
hint.return_data);
2728-
clk++;
2728+
2729+
// The last call to write_slice_to_memory() might have written more than one row.
2730+
clk = static_cast<uint32_t>(main_trace.size()) + 1;
27292731
write_slice_to_memory(
27302732
call_ptr, clk, success_offset, AvmMemoryTag::U0, AvmMemoryTag::U8, internal_return_ptr, { hint.success });
27312733
external_call_counter++;
2734+
pc++;
27322735
}
27332736

27342737
void AvmTraceBuilder::op_get_contract_instance(uint8_t indirect, uint32_t address_offset, uint32_t dst_offset)
@@ -3685,7 +3688,7 @@ void AvmTraceBuilder::op_variable_msm(uint8_t indirect,
36853688
.main_internal_return_ptr = FF(internal_return_ptr),
36863689
.main_mem_addr_a = FF(direct_points_offset),
36873690
.main_mem_addr_b = FF(direct_scalars_offset),
3688-
.main_pc = FF(pc++),
3691+
.main_pc = FF(pc),
36893692
.main_r_in_tag = FF(static_cast<uint32_t>(AvmMemoryTag::FF)),
36903693
.main_sel_mem_op_a = FF(1),
36913694
.main_sel_mem_op_b = FF(1),
@@ -3882,6 +3885,8 @@ void AvmTraceBuilder::op_variable_msm(uint8_t indirect,
38823885
.main_sel_mem_op_a = FF(1),
38833886
.main_w_in_tag = FF(static_cast<uint32_t>(AvmMemoryTag::U8)),
38843887
});
3888+
3889+
pc++;
38853890
}
38863891
// Finalise Lookup Counts
38873892
//

0 commit comments

Comments
 (0)