@@ -590,19 +590,19 @@ void java_bytecode_convert_methodt::convert(
590
590
to_java_class_type (class_symbol.type ).lambda_method_handles ());
591
591
}
592
592
593
- static irep_idt get_if_cmp_operator (const irep_idt &stmt )
593
+ static irep_idt get_if_cmp_operator (const u1 bytecode )
594
594
{
595
- if (stmt== patternt (" if_?cmplt" ))
595
+ if (bytecode == patternt (" if_?cmplt" ))
596
596
return ID_lt;
597
- if (stmt== patternt (" if_?cmple" ))
597
+ if (bytecode == patternt (" if_?cmple" ))
598
598
return ID_le;
599
- if (stmt== patternt (" if_?cmpgt" ))
599
+ if (bytecode == patternt (" if_?cmpgt" ))
600
600
return ID_gt;
601
- if (stmt== patternt (" if_?cmpge" ))
601
+ if (bytecode == patternt (" if_?cmpge" ))
602
602
return ID_ge;
603
- if (stmt== patternt (" if_?cmpeq" ))
603
+ if (bytecode == patternt (" if_?cmpeq" ))
604
604
return ID_equal;
605
- if (stmt== patternt (" if_?cmpne" ))
605
+ if (bytecode == patternt (" if_?cmpne" ))
606
606
return ID_notequal;
607
607
608
608
throw " unhandled java comparison instruction" ;
@@ -1001,7 +1001,7 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1001
1001
// clang-format off
1002
1002
if (bytecode != BC_goto &&
1003
1003
bytecode != BC_return &&
1004
- statement != patternt (" ?return" ) &&
1004
+ bytecode != patternt (" ?return" ) &&
1005
1005
bytecode != BC_athrow &&
1006
1006
bytecode != BC_jsr &&
1007
1007
bytecode != BC_jsr_w &&
@@ -1024,8 +1024,8 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1024
1024
bytecode == BC_ldiv ||
1025
1025
bytecode == BC_irem ||
1026
1026
bytecode == BC_lrem ||
1027
- statement == patternt (" ?astore" ) ||
1028
- statement == patternt (" ?aload" ) ||
1027
+ bytecode == patternt (" ?astore" ) ||
1028
+ bytecode == patternt (" ?aload" ) ||
1029
1029
bytecode == BC_invokestatic ||
1030
1030
bytecode == BC_invokevirtual ||
1031
1031
bytecode == BC_invokespecial ||
@@ -1043,8 +1043,8 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1043
1043
1044
1044
// clang-format off
1045
1045
if (bytecode == BC_goto ||
1046
- statement == patternt (" if_?cmp??" ) ||
1047
- statement == patternt (" if??" ) ||
1046
+ bytecode == patternt (" if_?cmp??" ) ||
1047
+ bytecode == patternt (" if??" ) ||
1048
1048
bytecode == BC_ifnonnull ||
1049
1049
bytecode == BC_ifnull ||
1050
1050
bytecode == BC_jsr ||
@@ -1266,7 +1266,7 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1266
1266
PRECONDITION (op.empty () && results.empty ());
1267
1267
c=code_returnt ();
1268
1268
}
1269
- else if (statement== patternt (" ?return" ))
1269
+ else if (bytecode == patternt (" ?return" ))
1270
1270
{
1271
1271
// Return types are promoted in java, so this might need
1272
1272
// conversion.
@@ -1275,25 +1275,24 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1275
1275
typecast_exprt::conditional_cast (op[0 ], method_return_type);
1276
1276
c=code_returnt (r);
1277
1277
}
1278
- else if (statement== patternt (" ?astore" ))
1278
+ else if (bytecode == patternt (" ?astore" ))
1279
1279
{
1280
1280
assert (op.size ()==3 && results.empty ());
1281
1281
c = convert_astore (statement, op, i_it->source_location );
1282
1282
}
1283
- else if (
1284
- statement == patternt (" ?store" ) || statement == patternt (" ?store_?" ))
1283
+ else if (bytecode == patternt (" ?store" ) || bytecode == patternt (" ?store_?" ))
1285
1284
{
1286
1285
// store value into some local variable
1287
1286
PRECONDITION (op.size () == 1 && results.empty ());
1288
1287
c = convert_store (
1289
1288
statement, arg0, op, i_it->address , i_it->source_location );
1290
1289
}
1291
- else if (statement== patternt (" ?aload" ))
1290
+ else if (bytecode == patternt (" ?aload" ))
1292
1291
{
1293
1292
PRECONDITION (op.size () == 2 && results.size () == 1 );
1294
1293
results[0 ] = convert_aload (statement, op);
1295
1294
}
1296
- else if (statement == patternt (" ?load" ) || statement == patternt (" ?load_?" ))
1295
+ else if (bytecode == patternt (" ?load" ) || bytecode == patternt (" ?load_?" ))
1297
1296
{
1298
1297
// load a value from a local variable
1299
1298
results[0 ]=
@@ -1347,28 +1346,28 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1347
1346
assert (results.size ()==1 );
1348
1347
results[0 ]=from_integer (-1 , java_int_type ());
1349
1348
}
1350
- else if (statement == patternt (" ?const_?" ))
1349
+ else if (bytecode == patternt (" ?const_?" ))
1351
1350
{
1352
1351
assert (results.size ()==1 );
1353
1352
results = convert_const (statement, to_constant_expr (arg0), results);
1354
1353
}
1355
- else if (statement== patternt (" ?ipush" ))
1354
+ else if (bytecode == patternt (" ?ipush" ))
1356
1355
{
1357
1356
PRECONDITION (results.size ()==1 );
1358
1357
DATA_INVARIANT (
1359
1358
arg0.id ()==ID_constant,
1360
1359
" ipush argument expected to be constant" );
1361
1360
results[0 ] = typecast_exprt::conditional_cast (arg0, java_int_type ());
1362
1361
}
1363
- else if (statement== patternt (" if_?cmp??" ))
1362
+ else if (bytecode == patternt (" if_?cmp??" ))
1364
1363
{
1365
1364
PRECONDITION (op.size () == 2 && results.empty ());
1366
1365
const mp_integer number =
1367
1366
numeric_cast_v<mp_integer>(to_constant_expr (arg0));
1368
1367
c = convert_if_cmp (
1369
- address_map, statement , op, number, i_it->source_location );
1368
+ address_map, bytecode , op, number, i_it->source_location );
1370
1369
}
1371
- else if (statement== patternt (" if??" ))
1370
+ else if (bytecode == patternt (" if??" ))
1372
1371
{
1373
1372
// clang-format off
1374
1373
const irep_idt id=
@@ -1387,14 +1386,14 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1387
1386
numeric_cast_v<mp_integer>(to_constant_expr (arg0));
1388
1387
c = convert_if (address_map, op, id, number, i_it->source_location );
1389
1388
}
1390
- else if (statement== patternt (" ifnonnull" ))
1389
+ else if (bytecode == patternt (" ifnonnull" ))
1391
1390
{
1392
1391
PRECONDITION (op.size () == 1 && results.empty ());
1393
1392
const mp_integer number =
1394
1393
numeric_cast_v<mp_integer>(to_constant_expr (arg0));
1395
1394
c = convert_ifnonull (address_map, op, number, i_it->source_location );
1396
1395
}
1397
- else if (statement== patternt (" ifnull" ))
1396
+ else if (bytecode == patternt (" ifnull" ))
1398
1397
{
1399
1398
PRECONDITION (op.size () == 1 && results.empty ());
1400
1399
const mp_integer number =
@@ -1405,80 +1404,80 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1405
1404
{
1406
1405
c = convert_iinc (arg0, arg1, i_it->source_location , i_it->address );
1407
1406
}
1408
- else if (statement== patternt (" ?xor" ))
1407
+ else if (bytecode == patternt (" ?xor" ))
1409
1408
{
1410
1409
PRECONDITION (op.size () == 2 && results.size () == 1 );
1411
1410
results[0 ]=bitxor_exprt (op[0 ], op[1 ]);
1412
1411
}
1413
- else if (statement== patternt (" ?or" ))
1412
+ else if (bytecode == patternt (" ?or" ))
1414
1413
{
1415
1414
PRECONDITION (op.size () == 2 && results.size () == 1 );
1416
1415
results[0 ]=bitor_exprt (op[0 ], op[1 ]);
1417
1416
}
1418
- else if (statement== patternt (" ?and" ))
1417
+ else if (bytecode == patternt (" ?and" ))
1419
1418
{
1420
1419
PRECONDITION (op.size () == 2 && results.size () == 1 );
1421
1420
results[0 ]=bitand_exprt (op[0 ], op[1 ]);
1422
1421
}
1423
- else if (statement== patternt (" ?shl" ))
1422
+ else if (bytecode == patternt (" ?shl" ))
1424
1423
{
1425
1424
PRECONDITION (op.size () == 2 && results.size () == 1 );
1426
1425
results[0 ]=shl_exprt (op[0 ], op[1 ]);
1427
1426
}
1428
- else if (statement== patternt (" ?shr" ))
1427
+ else if (bytecode == patternt (" ?shr" ))
1429
1428
{
1430
1429
PRECONDITION (op.size () == 2 && results.size () == 1 );
1431
1430
results[0 ]=ashr_exprt (op[0 ], op[1 ]);
1432
1431
}
1433
- else if (statement== patternt (" ?ushr" ))
1432
+ else if (bytecode == patternt (" ?ushr" ))
1434
1433
{
1435
1434
PRECONDITION (op.size () == 2 && results.size () == 1 );
1436
1435
results = convert_ushr (statement, op, results);
1437
1436
}
1438
- else if (statement== patternt (" ?add" ))
1437
+ else if (bytecode == patternt (" ?add" ))
1439
1438
{
1440
1439
PRECONDITION (op.size () == 2 && results.size () == 1 );
1441
1440
results[0 ]=plus_exprt (op[0 ], op[1 ]);
1442
1441
}
1443
- else if (statement== patternt (" ?sub" ))
1442
+ else if (bytecode == patternt (" ?sub" ))
1444
1443
{
1445
1444
PRECONDITION (op.size () == 2 && results.size () == 1 );
1446
1445
results[0 ]=minus_exprt (op[0 ], op[1 ]);
1447
1446
}
1448
- else if (statement== patternt (" ?div" ))
1447
+ else if (bytecode == patternt (" ?div" ))
1449
1448
{
1450
1449
PRECONDITION (op.size () == 2 && results.size () == 1 );
1451
1450
results[0 ]=div_exprt (op[0 ], op[1 ]);
1452
1451
}
1453
- else if (statement== patternt (" ?mul" ))
1452
+ else if (bytecode == patternt (" ?mul" ))
1454
1453
{
1455
1454
PRECONDITION (op.size () == 2 && results.size () == 1 );
1456
1455
results[0 ]=mult_exprt (op[0 ], op[1 ]);
1457
1456
}
1458
- else if (statement== patternt (" ?neg" ))
1457
+ else if (bytecode == patternt (" ?neg" ))
1459
1458
{
1460
1459
PRECONDITION (op.size () == 1 && results.size () == 1 );
1461
1460
results[0 ]=unary_minus_exprt (op[0 ], op[0 ].type ());
1462
1461
}
1463
- else if (statement== patternt (" ?rem" ))
1462
+ else if (bytecode == patternt (" ?rem" ))
1464
1463
{
1465
1464
PRECONDITION (op.size () == 2 && results.size () == 1 );
1466
1465
if (bytecode == BC_frem || bytecode == BC_drem)
1467
1466
results[0 ]=rem_exprt (op[0 ], op[1 ]);
1468
1467
else
1469
1468
results[0 ]=mod_exprt (op[0 ], op[1 ]);
1470
1469
}
1471
- else if (statement== patternt (" ?cmp" ))
1470
+ else if (bytecode == patternt (" ?cmp" ))
1472
1471
{
1473
1472
PRECONDITION (op.size () == 2 && results.size () == 1 );
1474
1473
results = convert_cmp (op, results);
1475
1474
}
1476
- else if (statement== patternt (" ?cmp?" ))
1475
+ else if (bytecode == patternt (" ?cmp?" ))
1477
1476
{
1478
1477
PRECONDITION (op.size () == 2 && results.size () == 1 );
1479
1478
results = convert_cmp2 (statement, op, results);
1480
1479
}
1481
- else if (statement== patternt (" ?cmpl" ))
1480
+ else if (bytecode == patternt (" ?cmpl" ))
1482
1481
{
1483
1482
PRECONDITION (op.size () == 2 && results.size () == 1 );
1484
1483
results[0 ]=binary_relation_exprt (op[0 ], ID_lt, op[1 ]);
@@ -1562,7 +1561,7 @@ code_blockt java_bytecode_convert_methodt::convert_instructions(
1562
1561
1563
1562
c = convert_putstatic (i_it->source_location , arg0, op, symbol_expr);
1564
1563
}
1565
- else if (statement== patternt (" ?2?" )) // i2c etc.
1564
+ else if (bytecode == patternt (" ?2?" )) // i2c etc.
1566
1565
{
1567
1566
PRECONDITION (op.size () == 1 && results.size () == 1 );
1568
1567
typet type=java_type_from_char (statement[2 ]);
@@ -2747,12 +2746,12 @@ code_ifthenelset java_bytecode_convert_methodt::convert_if(
2747
2746
2748
2747
code_ifthenelset java_bytecode_convert_methodt::convert_if_cmp (
2749
2748
const java_bytecode_convert_methodt::address_mapt &address_map,
2750
- const irep_idt &statement ,
2749
+ const u1 bytecode ,
2751
2750
const exprt::operandst &op,
2752
2751
const mp_integer &number,
2753
2752
const source_locationt &location) const
2754
2753
{
2755
- const irep_idt cmp_op = get_if_cmp_operator (statement );
2754
+ const irep_idt cmp_op = get_if_cmp_operator (bytecode );
2756
2755
binary_relation_exprt condition (
2757
2756
op[0 ], cmp_op, typecast_exprt::conditional_cast (op[1 ], op[0 ].type ()));
2758
2757
condition.add_source_location () = location;
0 commit comments