@@ -61,6 +61,42 @@ static bool should_use_local_definition_for(const exprt &expr)
61
61
return false ;
62
62
}
63
63
64
+ static json_objectt value_set_dereference_stats_to_json (
65
+ const exprt &pointer,
66
+ const std::vector<exprt> &points_to_set,
67
+ const std::vector<exprt> &retained_values,
68
+ const exprt &value)
69
+ {
70
+ json_objectt json_result;
71
+ json_result[" Pointer" ] = json_stringt{format_to_string (pointer)};
72
+ json_result[" PointsToSetSize" ] =
73
+ json_numbert{std::to_string (points_to_set.size ())};
74
+
75
+ json_arrayt points_to_set_json;
76
+ for (const auto &object : points_to_set)
77
+ {
78
+ points_to_set_json.push_back (json_stringt{format_to_string (object)});
79
+ }
80
+
81
+ json_result[" PointsToSet" ] = points_to_set_json;
82
+
83
+ json_result[" RetainedValuesSetSize" ] =
84
+ json_numbert{std::to_string (points_to_set.size ())};
85
+
86
+ json_arrayt retained_values_set_json;
87
+ for (auto &retained_value : retained_values)
88
+ {
89
+ retained_values_set_json.push_back (
90
+ json_stringt{format_to_string (retained_value)});
91
+ }
92
+
93
+ json_result[" RetainedValuesSet" ] = retained_values_set_json;
94
+
95
+ json_result[" Value" ] = json_stringt{format_to_string (value)};
96
+
97
+ return json_result;
98
+ }
99
+
64
100
exprt value_set_dereferencet::dereference (
65
101
const exprt &pointer,
66
102
bool display_points_to_sets)
@@ -106,14 +142,6 @@ exprt value_set_dereferencet::dereference(
106
142
// type of the object
107
143
const typet &type=pointer.type ().subtype ();
108
144
109
- json_objectt json_result;
110
- if (display_points_to_sets)
111
- {
112
- std::stringstream ss;
113
- ss << format (pointer);
114
- json_result[" Pointer" ] = json_stringt (ss.str ());
115
- }
116
-
117
145
#ifdef DEBUG
118
146
std::cout << " value_set_dereferencet::dereference pointer=" << format (pointer)
119
147
<< ' \n ' ;
@@ -123,22 +151,6 @@ exprt value_set_dereferencet::dereference(
123
151
const std::vector<exprt> points_to_set =
124
152
dereference_callback.get_value_set (pointer);
125
153
126
- if (display_points_to_sets)
127
- {
128
- json_result[" PointsToSetSize" ] =
129
- json_numbert (std::to_string (points_to_set.size ()));
130
-
131
- json_arrayt points_to_set_json;
132
- for (auto p : points_to_set)
133
- {
134
- std::stringstream ss;
135
- ss << format (p);
136
- points_to_set_json.push_back (json_stringt (ss.str ()));
137
- }
138
-
139
- json_result[" PointsToSet" ] = points_to_set_json;
140
- }
141
-
142
154
#ifdef DEBUG
143
155
std::cout << " value_set_dereferencet::dereference points_to_set={" ;
144
156
for (auto p : points_to_set)
@@ -167,22 +179,6 @@ exprt value_set_dereferencet::dereference(
167
179
compare_against_pointer = fresh_binder.symbol_expr ();
168
180
}
169
181
170
- if (display_points_to_sets)
171
- {
172
- json_result[" RetainedValuesSetSize" ] =
173
- json_numbert (std::to_string (points_to_set.size ()));
174
-
175
- json_arrayt retained_values_set_json;
176
- for (auto &value : retained_values)
177
- {
178
- std::stringstream ss;
179
- ss << format (value);
180
- retained_values_set_json.push_back (json_stringt (ss.str ()));
181
- }
182
-
183
- json_result[" RetainedValuesSet" ] = retained_values_set_json;
184
- }
185
-
186
182
#ifdef DEBUG
187
183
std::cout << " value_set_dereferencet::dereference retained_values={" ;
188
184
for (const auto &value : retained_values)
@@ -272,21 +268,17 @@ exprt value_set_dereferencet::dereference(
272
268
if (compare_against_pointer != pointer)
273
269
value = let_exprt (to_symbol_expr (compare_against_pointer), pointer, value);
274
270
275
- if (display_points_to_sets)
276
- {
277
- std::stringstream ss;
278
- ss << format (value);
279
- json_result[" Value" ] = json_stringt (ss.str ());
280
-
281
- log.status () << json_result;
282
- }
283
-
284
271
#ifdef DEBUG
285
272
std::cout << " value_set_derefencet::dereference value=" << format (value)
286
273
<< ' \n '
287
274
<< std::flush;
288
275
#endif
289
276
277
+ if (display_points_to_sets)
278
+ {
279
+ log.status () << value_set_dereference_stats_to_json (
280
+ pointer, points_to_set, retained_values, value);
281
+ }
290
282
return value;
291
283
}
292
284
0 commit comments