@@ -1621,15 +1621,12 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1621
1621
{
1622
1622
PRECONDITION (op.size () == 1 && results.size () == 1 );
1623
1623
1624
- const typecast_exprt pointer (op[0 ], java_array_type (statement[0 ]));
1625
-
1626
- dereference_exprt array{pointer};
1627
- PRECONDITION (pointer.type ().subtype ().id () == ID_struct_tag);
1624
+ dereference_exprt array{
1625
+ typecast_exprt{op[0 ], java_array_type (statement[0 ])}};
1626
+ PRECONDITION (array.type ().id () == ID_struct_tag);
1628
1627
array.set (ID_java_member_access, true );
1629
1628
1630
- const member_exprt length (array, " length" , java_int_type ());
1631
-
1632
- results[0 ]=length;
1629
+ results[0 ] = member_exprt{std::move (array), " length" , java_int_type ()};
1633
1630
}
1634
1631
else if (statement==" tableswitch" ||
1635
1632
statement==" lookupswitch" )
@@ -1823,8 +1820,8 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1823
1820
1824
1821
if (start_new_block)
1825
1822
{
1826
- code_labelt newlabel ( label ( std::to_string (address)), code_blockt ());
1827
- root_block. add (newlabel );
1823
+ root_block. add (
1824
+ code_labelt{ label ( std::to_string (address)), code_blockt{}} );
1828
1825
root.branch .push_back (block_tree_nodet::get_leaf ());
1829
1826
assert ((root.branch_addresses .empty () ||
1830
1827
root.branch_addresses .back ()<address) &&
@@ -1952,10 +1949,9 @@ code_switcht java_bytecode_convert_methodt::convert_switch(
1952
1949
if (a_it == args.begin ())
1953
1950
{
1954
1951
code_switch_caset code_case (nil_exprt (), std::move (code));
1955
- code_case.add_source_location () = location;
1956
1952
code_case.set_default ();
1957
1953
1958
- code_block.add (std::move (code_case));
1954
+ code_block.add (std::move (code_case), location );
1959
1955
}
1960
1956
else
1961
1957
{
@@ -1964,9 +1960,7 @@ code_switcht java_bytecode_convert_methodt::convert_switch(
1964
1960
case_op.add_source_location () = location;
1965
1961
1966
1962
code_switch_caset code_case (std::move (case_op), std::move (code));
1967
- code_case.add_source_location () = location;
1968
-
1969
- code_block.add (std::move (code_case));
1963
+ code_block.add (std::move (code_case), location);
1970
1964
}
1971
1965
}
1972
1966
}
@@ -2490,7 +2484,7 @@ code_blockt java_bytecode_convert_methodt::convert_newarray(
2490
2484
constant_exprt size_limit = from_integer (max_array_length, java_int_type ());
2491
2485
binary_relation_exprt le_max_size (op[0 ], ID_le, size_limit);
2492
2486
code_assumet assume_le_max_size (le_max_size);
2493
- block.add (assume_le_max_size);
2487
+ block.add (std::move ( assume_le_max_size) );
2494
2488
}
2495
2489
const exprt tmp = tmp_variable (" newarray" , ref_type);
2496
2490
block.add (code_assignt (tmp, java_new_array));
@@ -2693,10 +2687,10 @@ code_blockt java_bytecode_convert_methodt::convert_iinc(
2693
2687
2694
2688
const exprt arg1_int_type =
2695
2689
typecast_exprt::conditional_cast (arg1, java_int_type ());
2696
- const code_assignt code_assign (
2690
+ code_assignt code_assign (
2697
2691
variable (arg0, ' i' , address, NO_CAST),
2698
2692
plus_exprt (variable (arg0, ' i' , address, CAST_AS_NEEDED), arg1_int_type));
2699
- block.add (code_assign);
2693
+ block.add (std::move ( code_assign) );
2700
2694
2701
2695
return block;
2702
2696
}
@@ -2829,20 +2823,16 @@ exprt java_bytecode_convert_methodt::convert_aload(
2829
2823
const irep_idt &statement,
2830
2824
const exprt::operandst &op) const
2831
2825
{
2832
- const char &type_char = statement[0 ];
2833
- const typecast_exprt pointer (op[0 ], java_array_type (type_char));
2834
-
2835
- dereference_exprt deref{pointer};
2826
+ const char type_char = statement[0 ];
2827
+ dereference_exprt deref{typecast_exprt{op[0 ], java_array_type (type_char)}};
2836
2828
deref.set (ID_java_member_access, true );
2837
2829
2838
- const member_exprt data_ptr (
2830
+ member_exprt data_ptr (
2839
2831
deref, " data" , pointer_type (java_type_from_char (type_char)));
2840
-
2841
- plus_exprt data_plus_offset{data_ptr, op[1 ]};
2832
+ plus_exprt data_plus_offset{std::move (data_ptr), op[1 ]};
2842
2833
// tag it so it's easy to identify during instrumentation
2843
2834
data_plus_offset.set (ID_java_array_access, true );
2844
- const dereference_exprt element{data_plus_offset};
2845
- return java_bytecode_promotion (element);
2835
+ return java_bytecode_promotion (dereference_exprt{data_plus_offset});
2846
2836
}
2847
2837
2848
2838
code_blockt java_bytecode_convert_methodt::convert_store (
@@ -2860,15 +2850,15 @@ code_blockt java_bytecode_convert_methodt::convert_store(
2860
2850
toassign = typecast_exprt::conditional_cast (toassign, var.type ());
2861
2851
2862
2852
code_blockt block;
2853
+ block.add_source_location () = location;
2863
2854
2864
2855
save_stack_entries (
2865
2856
" stack_store" ,
2866
2857
block,
2867
2858
bytecode_write_typet::VARIABLE,
2868
2859
var_name);
2869
- code_assignt assign (var, toassign);
2870
- assign.add_source_location () = location;
2871
- block.add (assign);
2860
+
2861
+ block.add (code_assignt{var, toassign}, location);
2872
2862
return block;
2873
2863
}
2874
2864
@@ -2878,28 +2868,23 @@ code_blockt java_bytecode_convert_methodt::convert_astore(
2878
2868
const source_locationt &location)
2879
2869
{
2880
2870
const char type_char = statement[0 ];
2881
- const typecast_exprt pointer (op[0 ], java_array_type (type_char));
2882
-
2883
- dereference_exprt deref{pointer};
2871
+ dereference_exprt deref{typecast_exprt{op[0 ], java_array_type (type_char)}};
2884
2872
deref.set (ID_java_member_access, true );
2885
2873
2886
- const member_exprt data_ptr (
2874
+ member_exprt data_ptr (
2887
2875
deref, " data" , pointer_type (java_type_from_char (type_char)));
2888
-
2889
- plus_exprt data_plus_offset{data_ptr, op[1 ]};
2876
+ plus_exprt data_plus_offset{std::move (data_ptr), op[1 ]};
2890
2877
// tag it so it's easy to identify during instrumentation
2891
2878
data_plus_offset.set (ID_java_array_access, true );
2892
- const dereference_exprt element{data_plus_offset};
2893
2879
2894
2880
code_blockt block;
2895
2881
block.add_source_location () = location;
2896
2882
2897
2883
save_stack_entries (
2898
2884
" stack_astore" , block, bytecode_write_typet::ARRAY_REF, " " );
2899
2885
2900
- code_assignt array_put (element, op[2 ]);
2901
- array_put.add_source_location () = location;
2902
- block.add (array_put);
2886
+ code_assignt array_put{dereference_exprt{data_plus_offset}, op[2 ]};
2887
+ block.add (std::move (array_put), location);
2903
2888
return block;
2904
2889
}
2905
2890
0 commit comments