@@ -727,46 +727,41 @@ void java_bytecode_parsert::rconstant_pool()
727
727
}
728
728
729
729
// we do a bit of post-processing after we have them all
730
- for (constant_poolt::iterator
731
- it=constant_pool.begin ();
732
- it!=constant_pool.end ();
733
- it++)
734
- {
735
- // the first entry isn't used
736
- if (it==constant_pool.begin ())
737
- continue ;
738
-
739
- switch (it->tag )
740
- {
741
- case CONSTANT_Class:
730
+ std::for_each (
731
+ std::next (constant_pool.begin ()),
732
+ constant_pool.end (),
733
+ [&](constant_poolt::value_type &entry) {
734
+ switch (entry.tag )
735
+ {
736
+ case CONSTANT_Class:
742
737
{
743
- const std::string &s= id2string (pool_entry (it-> ref1 ).s );
744
- it-> expr = type_exprt (java_classname (s));
738
+ const std::string &s = id2string (pool_entry (entry. ref1 ).s );
739
+ entry. expr = type_exprt (java_classname (s));
745
740
}
746
741
break ;
747
742
748
- case CONSTANT_Fieldref:
743
+ case CONSTANT_Fieldref:
749
744
{
750
- const pool_entryt &nameandtype_entry= pool_entry (it-> ref2 );
745
+ const pool_entryt &nameandtype_entry = pool_entry (entry. ref2 );
751
746
const pool_entryt &name_entry=pool_entry (nameandtype_entry.ref1 );
752
- const pool_entryt &class_entry= pool_entry (it-> ref1 );
747
+ const pool_entryt &class_entry = pool_entry (entry. ref1 );
753
748
const pool_entryt &class_name_entry=pool_entry (class_entry.ref1 );
754
749
typet type=type_entry (nameandtype_entry.ref2 );
755
750
756
751
auto class_tag = java_classname (id2string (class_name_entry.s ));
757
752
758
753
fieldref_exprt fieldref (type, name_entry.s , class_tag.get_identifier ());
759
754
760
- it-> expr = fieldref;
755
+ entry. expr = fieldref;
761
756
}
762
757
break ;
763
758
764
- case CONSTANT_Methodref:
765
- case CONSTANT_InterfaceMethodref:
759
+ case CONSTANT_Methodref:
760
+ case CONSTANT_InterfaceMethodref:
766
761
{
767
- const pool_entryt &nameandtype_entry= pool_entry (it-> ref2 );
762
+ const pool_entryt &nameandtype_entry = pool_entry (entry. ref2 );
768
763
const pool_entryt &name_entry=pool_entry (nameandtype_entry.ref1 );
769
- const pool_entryt &class_entry= pool_entry (it-> ref1 );
764
+ const pool_entryt &class_entry = pool_entry (entry. ref1 );
770
765
const pool_entryt &class_name_entry=pool_entry (class_entry.ref1 );
771
766
typet type=type_entry (nameandtype_entry.ref2 );
772
767
@@ -787,72 +782,74 @@ void java_bytecode_parsert::rconstant_pool()
787
782
virtual_function.set (ID_C_base_name, name_entry.s );
788
783
virtual_function.set (ID_identifier, identifier);
789
784
790
- it-> expr = virtual_function;
785
+ entry. expr = virtual_function;
791
786
}
792
787
break ;
793
788
794
- case CONSTANT_String:
789
+ case CONSTANT_String:
795
790
{
796
791
// ldc turns these into references to java.lang.String
797
- it-> expr = java_string_literal_exprt{pool_entry (it-> ref1 ).s };
792
+ entry. expr = java_string_literal_exprt{pool_entry (entry. ref1 ).s };
798
793
}
799
794
break ;
800
795
801
- case CONSTANT_Integer:
802
- it-> expr = from_integer (it-> number , java_int_type ());
803
- break ;
796
+ case CONSTANT_Integer:
797
+ entry. expr = from_integer (entry. number , java_int_type ());
798
+ break ;
804
799
805
- case CONSTANT_Float:
800
+ case CONSTANT_Float:
806
801
{
807
802
ieee_floatt value (ieee_float_spect::single_precision ());
808
- value.unpack (it-> number );
809
- it-> expr = value.to_expr ();
803
+ value.unpack (entry. number );
804
+ entry. expr = value.to_expr ();
810
805
}
811
806
break ;
812
807
813
- case CONSTANT_Long:
814
- it-> expr = from_integer (it-> number , java_long_type ());
815
- break ;
808
+ case CONSTANT_Long:
809
+ entry. expr = from_integer (entry. number , java_long_type ());
810
+ break ;
816
811
817
- case CONSTANT_Double:
812
+ case CONSTANT_Double:
818
813
{
819
814
ieee_floatt value (ieee_float_spect::double_precision ());
820
- value.unpack (it-> number );
821
- it-> expr = value.to_expr ();
815
+ value.unpack (entry. number );
816
+ entry. expr = value.to_expr ();
822
817
}
823
818
break ;
824
819
825
- case CONSTANT_NameAndType:
820
+ case CONSTANT_NameAndType:
826
821
{
827
- it-> expr .id (" nameandtype" );
822
+ entry. expr .id (" nameandtype" );
828
823
}
829
824
break ;
830
825
831
- case CONSTANT_MethodHandle:
826
+ case CONSTANT_MethodHandle:
832
827
{
833
- it-> expr .id (" methodhandle" );
828
+ entry. expr .id (" methodhandle" );
834
829
}
835
830
break ;
836
831
837
- case CONSTANT_MethodType:
832
+ case CONSTANT_MethodType:
838
833
{
839
- it-> expr .id (" methodtype" );
834
+ entry. expr .id (" methodtype" );
840
835
}
841
836
break ;
842
837
843
- case CONSTANT_InvokeDynamic:
838
+ case CONSTANT_InvokeDynamic:
844
839
{
845
- it-> expr .id (" invokedynamic" );
846
- const pool_entryt &nameandtype_entry= pool_entry (it-> ref2 );
840
+ entry. expr .id (" invokedynamic" );
841
+ const pool_entryt &nameandtype_entry = pool_entry (entry. ref2 );
847
842
typet type=type_entry (nameandtype_entry.ref2 );
848
- type.set (ID_java_lambda_method_handle_index, it-> ref1 );
849
- it-> expr .type ()= type;
843
+ type.set (ID_java_lambda_method_handle_index, entry. ref1 );
844
+ entry. expr .type () = type;
850
845
}
851
846
break ;
852
847
853
- default :{};
854
- }
855
- }
848
+ default :
849
+ {
850
+ };
851
+ }
852
+ });
856
853
}
857
854
858
855
void java_bytecode_parsert::rinterfaces (classt &parsed_class)
0 commit comments