Skip to content

Commit 48845af

Browse files
committed
Interpreter: constify mp_integer typed address parameters
1 parent 4466408 commit 48845af

File tree

3 files changed

+18
-16
lines changed

3 files changed

+18
-16
lines changed

src/goto-programs/interpreter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -692,7 +692,7 @@ void interpretert::execute_assign()
692692

693693
/// sets the memory at address with the given rhs value (up to sizeof(rhs))
694694
void interpretert::assign(
695-
mp_integer address,
695+
const mp_integer &address,
696696
const mp_vectort &rhs)
697697
{
698698
for(size_t i=0; i<rhs.size(); i++)

src/goto-programs/interpreter_class.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -216,19 +216,19 @@ class interpretert:public messaget
216216
void clear_input_flags();
217217

218218
void allocate(
219-
mp_integer address,
219+
const mp_integer &address,
220220
size_t size);
221221

222222
void assign(
223-
mp_integer address,
223+
const mp_integer &address,
224224
const mp_vectort &rhs);
225225

226226
void read(
227-
mp_integer address,
227+
const mp_integer &address,
228228
mp_vectort &dest) const;
229229

230230
void read_unbounded(
231-
mp_integer address,
231+
const mp_integer &address,
232232
mp_vectort &dest) const;
233233

234234
virtual void command();
@@ -279,12 +279,12 @@ class interpretert:public messaget
279279

280280
bool byte_offset_to_memory_offset(
281281
const typet &source_type,
282-
mp_integer byte_offset,
282+
const mp_integer &byte_offset,
283283
mp_integer &result);
284284

285285
bool memory_offset_to_byte_offset(
286286
const typet &source_type,
287-
mp_integer cell_offset,
287+
const mp_integer &cell_offset,
288288
mp_integer &result);
289289

290290
void evaluate(

src/goto-programs/interpreter_evaluate.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Author: Daniel Kroening, [email protected]
2424
/// reads a memory address and loads it into the dest variable marks cell as
2525
/// read before written if cell has never been written
2626
void interpretert::read(
27-
mp_integer address,
27+
const mp_integer &address,
2828
mp_vectort &dest) const
2929
{
3030
// copy memory region
@@ -47,7 +47,7 @@ void interpretert::read(
4747
}
4848

4949
void interpretert::read_unbounded(
50-
mp_integer address,
50+
const mp_integer &address,
5151
mp_vectort &dest) const
5252
{
5353
// copy memory region
@@ -76,7 +76,7 @@ void interpretert::read_unbounded(
7676

7777
/// reserves memory block of size at address
7878
void interpretert::allocate(
79-
mp_integer address,
79+
const mp_integer &address,
8080
size_t size)
8181
{
8282
// clear memory region
@@ -148,7 +148,7 @@ bool interpretert::count_type_leaves(const typet &ty, mp_integer &result)
148148
/// \return Offset into a vector of interpreter values; returns true on error
149149
bool interpretert::byte_offset_to_memory_offset(
150150
const typet &source_type,
151-
mp_integer offset,
151+
const mp_integer &offset,
152152
mp_integer &result)
153153
{
154154
if(source_type.id()==ID_struct)
@@ -228,7 +228,7 @@ bool interpretert::byte_offset_to_memory_offset(
228228
/// \return The corresponding byte offset. Returns true on error
229229
bool interpretert::memory_offset_to_byte_offset(
230230
const typet &source_type,
231-
mp_integer cell_offset,
231+
const mp_integer &full_cell_offset,
232232
mp_integer &result)
233233
{
234234
if(source_type.id()==ID_struct)
@@ -237,6 +237,7 @@ bool interpretert::memory_offset_to_byte_offset(
237237
const struct_typet::componentst &components=st.components();
238238
member_offset_iterator offsets(st, ns);
239239
mp_integer previous_member_sizes;
240+
mp_integer cell_offset=full_cell_offset;
240241
for(; offsets->first<components.size() && offsets->second!=-1; ++offsets)
241242
{
242243
const auto &component_type=components[offsets->first].type();
@@ -278,13 +279,14 @@ bool interpretert::memory_offset_to_byte_offset(
278279
mp_integer elem_count;
279280
if(count_type_leaves(at.subtype(), elem_count))
280281
return true;
281-
mp_integer this_idx=cell_offset/elem_count;
282+
mp_integer this_idx=full_cell_offset/elem_count;
282283
if(this_idx>=array_size_vec[0])
283284
return true;
284285
mp_integer subtype_result;
285286
bool ret=
286-
memory_offset_to_byte_offset(at.subtype(),
287-
cell_offset%elem_count,
287+
memory_offset_to_byte_offset(
288+
at.subtype(),
289+
full_cell_offset%elem_count,
288290
subtype_result);
289291
result=subtype_result+(elem_size*this_idx);
290292
return ret;
@@ -293,7 +295,7 @@ bool interpretert::memory_offset_to_byte_offset(
293295
{
294296
// Primitive type.
295297
result=0;
296-
return cell_offset!=0;
298+
return full_cell_offset!=0;
297299
}
298300
}
299301

0 commit comments

Comments
 (0)