@@ -487,39 +487,41 @@ void java_bytecode_convert_classt::add_array_types(symbol_tablet &symbol_table)
487
487
if (symbol_table.has_symbol (symbol_type_identifier))
488
488
return ;
489
489
490
- struct_typet struct_type ;
490
+ class_typet class_type ;
491
491
// we have the base class, java.lang.Object, length and data
492
492
// of appropriate type
493
- struct_type.set_tag (symbol_type_identifier);
494
-
495
- struct_type.components ().reserve (3 );
496
- struct_typet::componentt
497
- comp0 (" @java.lang.Object" , symbol_typet (" java::java.lang.Object" ));
498
- comp0.set_pretty_name (" @java.lang.Object" );
499
- comp0.set_base_name (" @java.lang.Object" );
500
- struct_type.components ().push_back (comp0);
501
-
502
- struct_typet::componentt comp1 (" length" , java_int_type ());
503
- comp1.set_pretty_name (" length" );
504
- comp1.set_base_name (" length" );
505
- struct_type.components ().push_back (comp1);
506
-
507
- struct_typet::componentt
508
- comp2 (" data" , java_reference_type (java_type_from_char (l)));
509
- comp2.set_pretty_name (" data" );
510
- comp2.set_base_name (" data" );
511
- struct_type.components ().push_back (comp2);
493
+ class_type.set_tag (symbol_type_identifier);
494
+
495
+ class_type.components ().reserve (3 );
496
+ class_typet::componentt base_class_component (
497
+ " @java.lang.Object" , symbol_typet (" java::java.lang.Object" ));
498
+ base_class_component.set_pretty_name (" @java.lang.Object" );
499
+ base_class_component.set_base_name (" @java.lang.Object" );
500
+ class_type.components ().push_back (base_class_component);
501
+
502
+ class_typet::componentt length_component (" length" , java_int_type ());
503
+ length_component.set_pretty_name (" length" );
504
+ length_component.set_base_name (" length" );
505
+ class_type.components ().push_back (length_component);
506
+
507
+ class_typet::componentt data_component (
508
+ " data" , java_reference_type (java_type_from_char (l)));
509
+ data_component.set_pretty_name (" data" );
510
+ data_component.set_base_name (" data" );
511
+ class_type.components ().push_back (data_component);
512
+
513
+ class_type.add_base (symbol_typet (" java::java.lang.Object" ));
512
514
513
515
INVARIANT (
514
- is_valid_java_array (struct_type ),
516
+ is_valid_java_array (class_type ),
515
517
" Constructed a new type representing a Java Array "
516
518
" object that doesn't match expectations" );
517
519
518
520
symbolt symbol;
519
521
symbol.name =symbol_type_identifier;
520
522
symbol.base_name =symbol_type.get (ID_C_base_name);
521
523
symbol.is_type =true ;
522
- symbol.type =struct_type ;
524
+ symbol.type = class_type ;
523
525
symbol_table.add (symbol);
524
526
525
527
// Also provide a clone method:
@@ -566,14 +568,16 @@ void java_bytecode_convert_classt::add_array_types(symbol_tablet &symbol_table)
566
568
java_reference_type (symbol_type));
567
569
dereference_exprt old_array (this_symbol.symbol_expr (), symbol_type);
568
570
dereference_exprt new_array (local_symexpr, symbol_type);
569
- member_exprt old_length (old_array, comp1.get_name (), comp1.type ());
571
+ member_exprt old_length (
572
+ old_array, length_component.get_name (), length_component.type ());
570
573
java_new_array.copy_to_operands (old_length);
571
574
code_assignt create_blank (local_symexpr, java_new_array);
572
575
clone_body.move_to_operands (create_blank);
573
576
574
-
575
- member_exprt old_data (old_array, comp2.get_name (), comp2.type ());
576
- member_exprt new_data (new_array, comp2.get_name (), comp2.type ());
577
+ member_exprt old_data (
578
+ old_array, data_component.get_name (), data_component.type ());
579
+ member_exprt new_data (
580
+ new_array, data_component.get_name (), data_component.type ());
577
581
578
582
/*
579
583
// TODO use this instead of a loop.
@@ -592,7 +596,7 @@ void java_bytecode_convert_classt::add_array_types(symbol_tablet &symbol_table)
592
596
index_symbol.name =index_name;
593
597
index_symbol.base_name =" index" ;
594
598
index_symbol.pretty_name =index_symbol.base_name ;
595
- index_symbol.type =comp1 .type ();
599
+ index_symbol.type = length_component .type ();
596
600
index_symbol.mode =ID_java;
597
601
symbol_table.add (index_symbol);
598
602
const auto &index_symexpr=index_symbol.symbol_expr ();
@@ -623,7 +627,8 @@ void java_bytecode_convert_classt::add_array_types(symbol_tablet &symbol_table)
623
627
// End for-loop
624
628
clone_body.move_to_operands (copy_loop);
625
629
626
- member_exprt new_base_class (new_array, comp0.get_name (), comp0.type ());
630
+ member_exprt new_base_class (
631
+ new_array, base_class_component.get_name (), base_class_component.type ());
627
632
address_of_exprt retval (new_base_class);
628
633
code_returnt return_inst (retval);
629
634
clone_body.move_to_operands (return_inst);
0 commit comments