Skip to content

Commit 3049281

Browse files
Extract convert_cmp function
1 parent 5a5788c commit 3049281

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

jbmc/src/java_bytecode/java_bytecode_convert_method.cpp

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1682,26 +1682,7 @@ codet java_bytecode_convert_methodt::convert_instructions(
16821682
else if(statement==patternt("?cmp"))
16831683
{
16841684
PRECONDITION(op.size() == 2 && results.size() == 1);
1685-
1686-
// The integer result on the stack is:
1687-
// 0 if op[0] equals op[1]
1688-
// -1 if op[0] is less than op[1]
1689-
// 1 if op[0] is greater than op[1]
1690-
1691-
const typet t=java_int_type();
1692-
exprt one=from_integer(1, t);
1693-
exprt minus_one=from_integer(-1, t);
1694-
1695-
if_exprt greater=if_exprt(
1696-
binary_relation_exprt(op[0], ID_gt, op[1]),
1697-
one,
1698-
minus_one);
1699-
1700-
results[0]=
1701-
if_exprt(
1702-
binary_relation_exprt(op[0], ID_equal, op[1]),
1703-
from_integer(0, t),
1704-
greater);
1685+
results = convert_cmp(op, results);
17051686
}
17061687
else if(statement==patternt("?cmp?"))
17071688
{
@@ -2508,6 +2489,26 @@ codet java_bytecode_convert_methodt::convert_instructions(
25082489
return code;
25092490
}
25102491

2492+
exprt::operandst &java_bytecode_convert_methodt::convert_cmp(
2493+
const exprt::operandst &op,
2494+
exprt::operandst &results) const
2495+
{ // The integer result on the stack is:
2496+
// 0 if op[0] equals op[1]
2497+
// -1 if op[0] is less than op[1]
2498+
// 1 if op[0] is greater than op[1]
2499+
2500+
const typet t = java_int_type();
2501+
exprt one = from_integer(1, t);
2502+
exprt minus_one = from_integer(-1, t);
2503+
2504+
if_exprt greater =
2505+
if_exprt(binary_relation_exprt(op[0], ID_gt, op[1]), one, minus_one);
2506+
2507+
results[0] = if_exprt(
2508+
binary_relation_exprt(op[0], ID_equal, op[1]), from_integer(0, t), greater);
2509+
return results;
2510+
}
2511+
25112512
exprt::operandst &java_bytecode_convert_methodt::convert_ushr(
25122513
const irep_idt &statement,
25132514
const exprt::operandst &op,

jbmc/src/java_bytecode/java_bytecode_convert_method_class.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,5 +372,8 @@ class java_bytecode_convert_methodt:public messaget
372372
const irep_idt &statement,
373373
const exprt::operandst &op,
374374
exprt::operandst &results) const;
375+
376+
exprt::operandst &
377+
convert_cmp(const exprt::operandst &op, exprt::operandst &results) const;
375378
};
376379
#endif

0 commit comments

Comments
 (0)