Skip to content

Commit 8e573ce

Browse files
author
Lukasz A.J. Wrona
committed
Use for-each instead of for w/ iterators
Skip first iteration with next
1 parent 722649c commit 8e573ce

File tree

1 file changed

+48
-51
lines changed

1 file changed

+48
-51
lines changed

jbmc/src/java_bytecode/java_bytecode_parser.cpp

Lines changed: 48 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -727,46 +727,41 @@ void java_bytecode_parsert::rconstant_pool()
727727
}
728728

729729
// 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:
742737
{
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));
745740
}
746741
break;
747742

748-
case CONSTANT_Fieldref:
743+
case CONSTANT_Fieldref:
749744
{
750-
const pool_entryt &nameandtype_entry=pool_entry(it->ref2);
745+
const pool_entryt &nameandtype_entry = pool_entry(entry.ref2);
751746
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);
753748
const pool_entryt &class_name_entry=pool_entry(class_entry.ref1);
754749
typet type=type_entry(nameandtype_entry.ref2);
755750

756751
auto class_tag = java_classname(id2string(class_name_entry.s));
757752

758753
fieldref_exprt fieldref(type, name_entry.s, class_tag.get_identifier());
759754

760-
it->expr=fieldref;
755+
entry.expr = fieldref;
761756
}
762757
break;
763758

764-
case CONSTANT_Methodref:
765-
case CONSTANT_InterfaceMethodref:
759+
case CONSTANT_Methodref:
760+
case CONSTANT_InterfaceMethodref:
766761
{
767-
const pool_entryt &nameandtype_entry=pool_entry(it->ref2);
762+
const pool_entryt &nameandtype_entry = pool_entry(entry.ref2);
768763
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);
770765
const pool_entryt &class_name_entry=pool_entry(class_entry.ref1);
771766
typet type=type_entry(nameandtype_entry.ref2);
772767

@@ -787,72 +782,74 @@ void java_bytecode_parsert::rconstant_pool()
787782
virtual_function.set(ID_C_base_name, name_entry.s);
788783
virtual_function.set(ID_identifier, identifier);
789784

790-
it->expr=virtual_function;
785+
entry.expr = virtual_function;
791786
}
792787
break;
793788

794-
case CONSTANT_String:
789+
case CONSTANT_String:
795790
{
796791
// 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};
798793
}
799794
break;
800795

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;
804799

805-
case CONSTANT_Float:
800+
case CONSTANT_Float:
806801
{
807802
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();
810805
}
811806
break;
812807

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;
816811

817-
case CONSTANT_Double:
812+
case CONSTANT_Double:
818813
{
819814
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();
822817
}
823818
break;
824819

825-
case CONSTANT_NameAndType:
820+
case CONSTANT_NameAndType:
826821
{
827-
it->expr.id("nameandtype");
822+
entry.expr.id("nameandtype");
828823
}
829824
break;
830825

831-
case CONSTANT_MethodHandle:
826+
case CONSTANT_MethodHandle:
832827
{
833-
it->expr.id("methodhandle");
828+
entry.expr.id("methodhandle");
834829
}
835830
break;
836831

837-
case CONSTANT_MethodType:
832+
case CONSTANT_MethodType:
838833
{
839-
it->expr.id("methodtype");
834+
entry.expr.id("methodtype");
840835
}
841836
break;
842837

843-
case CONSTANT_InvokeDynamic:
838+
case CONSTANT_InvokeDynamic:
844839
{
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);
847842
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;
850845
}
851846
break;
852847

853-
default:{};
854-
}
855-
}
848+
default:
849+
{
850+
};
851+
}
852+
});
856853
}
857854

858855
void java_bytecode_parsert::rinterfaces(classt &parsed_class)

0 commit comments

Comments
 (0)