Skip to content

Commit f1bd41e

Browse files
Change code_typet to java_method_typet in jbmc
1 parent be3c4c6 commit f1bd41e

34 files changed

+272
-257
lines changed

jbmc/src/java_bytecode/ci_lazy_methods.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ void ci_lazy_methodst::initialize_instantiated_classes(
376376
for(const auto &mname : entry_points)
377377
{
378378
const auto &symbol=ns.lookup(mname);
379-
const auto &mtype=to_code_type(symbol.type);
379+
const auto &mtype = to_java_method_type(symbol.type);
380380
for(const auto &param : mtype.parameters())
381381
{
382382
if(param.type().id()==ID_pointer)

jbmc/src/java_bytecode/expr2java.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,10 @@ std::string expr2javat::convert_code_function_call(
5656
dest+='=';
5757
}
5858

59-
const code_typet &code_type=
60-
to_code_type(src.function().type());
59+
const java_method_typet &code_type =
60+
to_java_method_type(src.function().type());
6161

62-
bool has_this=code_type.has_this() &&
63-
!src.arguments().empty();
62+
bool has_this = code_type.has_this() && !src.arguments().empty();
6463

6564
if(has_this)
6665
{
@@ -284,7 +283,7 @@ std::string expr2javat::convert_rec(
284283
return q+"byte"+d;
285284
else if(src.id()==ID_code)
286285
{
287-
const code_typet &code_type=to_code_type(src);
286+
const java_method_typet &code_type = to_java_method_type(src);
288287

289288
// Java doesn't really have syntax for function types,
290289
// so we make one up, loosely inspired by the syntax
@@ -293,11 +292,10 @@ std::string expr2javat::convert_rec(
293292
std::string dest="";
294293

295294
dest+='(';
296-
const code_typet::parameterst &parameters=code_type.parameters();
295+
const java_method_typet::parameterst &parameters = code_type.parameters();
297296

298-
for(code_typet::parameterst::const_iterator
299-
it=parameters.begin();
300-
it!=parameters.end();
297+
for(java_method_typet::parameterst::const_iterator it = parameters.begin();
298+
it != parameters.end();
301299
it++)
302300
{
303301
if(it!=parameters.begin())
@@ -315,7 +313,7 @@ std::string expr2javat::convert_rec(
315313

316314
dest+=')';
317315

318-
const typet &return_type=code_type.return_type();
316+
const typet &return_type = code_type.return_type();
319317
dest+=" -> "+convert(return_type);
320318

321319
return q + dest;

jbmc/src/java_bytecode/java_bytecode_convert_class.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -781,12 +781,12 @@ void java_bytecode_convert_classt::add_array_types(symbol_tablet &symbol_table)
781781

782782
const irep_idt clone_name=
783783
id2string(symbol_type_identifier)+".clone:()Ljava/lang/Object;";
784-
code_typet::parametert this_param;
784+
java_method_typet::parametert this_param;
785785
this_param.set_identifier(id2string(clone_name)+"::this");
786786
this_param.set_base_name("this");
787787
this_param.set_this();
788788
this_param.type()=java_reference_type(symbol_type);
789-
const code_typet clone_type({this_param}, java_lang_object_type());
789+
const java_method_typet clone_type({this_param}, java_lang_object_type());
790790

791791
parameter_symbolt this_symbol;
792792
this_symbol.name=this_param.get_identifier();

jbmc/src/java_bytecode/java_bytecode_convert_method.cpp

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ class patternt
8787
/// parameters, which are initially nameless as method conversion hasn't
8888
/// happened. Also creates symbols in `symbol_table`.
8989
static void assign_parameter_names(
90-
code_typet &ftype,
90+
java_method_typet &ftype,
9191
const irep_idt &name_prefix,
9292
symbol_table_baset &symbol_table)
9393
{
94-
code_typet::parameterst &parameters=ftype.parameters();
94+
java_method_typet::parameterst &parameters = ftype.parameters();
9595

9696
// Mostly borrowed from java_bytecode_convert.cpp; maybe factor this out.
9797
// assign names to parameters
@@ -255,7 +255,7 @@ const exprt java_bytecode_convert_methodt::variable(
255255
/// message handler to collect warnings
256256
/// \return
257257
/// the constructed member type
258-
code_typet member_type_lazy(
258+
java_method_typet member_type_lazy(
259259
const std::string &descriptor,
260260
const optionalt<std::string> &signature,
261261
const std::string &class_name,
@@ -282,10 +282,11 @@ code_typet member_type_lazy(
282282
signature.value(),
283283
class_name);
284284
INVARIANT(member_type_from_signature.id()==ID_code, "Must be code type");
285-
if(to_code_type(member_type_from_signature).parameters().size()==
286-
to_code_type(member_type_from_descriptor).parameters().size())
285+
if(
286+
to_java_method_type(member_type_from_signature).parameters().size() ==
287+
to_java_method_type(member_type_from_descriptor).parameters().size())
287288
{
288-
return to_code_type(member_type_from_signature);
289+
return to_java_method_type(member_type_from_signature);
289290
}
290291
else
291292
{
@@ -306,7 +307,7 @@ code_typet member_type_lazy(
306307
<< message.eom;
307308
}
308309
}
309-
return to_code_type(member_type_from_descriptor);
310+
return to_java_method_type(member_type_from_descriptor);
310311
}
311312

312313
/// Retrieves the symbol of the lambda method associated with the given
@@ -345,7 +346,7 @@ void java_bytecode_convert_method_lazy(
345346
{
346347
symbolt method_symbol;
347348

348-
code_typet member_type = member_type_lazy(
349+
java_method_typet member_type = member_type_lazy(
349350
m.descriptor,
350351
m.signature,
351352
id2string(class_symbol.name),
@@ -378,8 +379,8 @@ void java_bytecode_convert_method_lazy(
378379
// do we need to add 'this' as a parameter?
379380
if(!m.is_static)
380381
{
381-
code_typet::parameterst &parameters = member_type.parameters();
382-
code_typet::parametert this_p;
382+
java_method_typet::parameterst &parameters = member_type.parameters();
383+
java_method_typet::parametert this_p;
383384
const reference_typet object_ref_type=
384385
java_reference_type(symbol_typet(class_symbol.name));
385386
this_p.type()=object_ref_type;
@@ -442,12 +443,12 @@ void java_bytecode_convert_methodt::convert(
442443

443444
symbolt &method_symbol=*symbol_table.get_writeable(method_identifier);
444445

445-
// Obtain a std::vector of code_typet::parametert objects from the
446+
// Obtain a std::vector of java_method_typet::parametert objects from the
446447
// (function) type of the symbol
447448
java_method_typet method_type = to_java_method_type(method_symbol.type);
448449
method_type.set(ID_C_class, class_symbol.name);
449450
method_return_type = method_type.return_type();
450-
code_typet::parameterst &parameters = method_type.parameters();
451+
java_method_typet::parameterst &parameters = method_type.parameters();
451452

452453
// Determine the number of local variable slots used by the JVM to maintain
453454
// the formal parameters
@@ -1250,9 +1251,10 @@ codet java_bytecode_convert_methodt::convert_instructions(
12501251
id2string(arg0.get(ID_identifier))==
12511252
"java::org.cprover.CProver.assume:(Z)V")
12521253
{
1253-
const code_typet &code_type=to_code_type(arg0.type());
1254-
INVARIANT(code_type.parameters().size()==1,
1255-
"function expected to have exactly one parameter");
1254+
const java_method_typet &code_type = to_java_method_type(arg0.type());
1255+
INVARIANT(
1256+
code_type.parameters().size() == 1,
1257+
"function expected to have exactly one parameter");
12561258
c = replace_call_to_cprover_assume(i_it->source_location, c);
12571259
}
12581260
// replace calls to CProver.atomicBegin
@@ -1995,8 +1997,8 @@ codet java_bytecode_convert_methodt::convert_monitorenterexit(
19951997
return code_skipt();
19961998

19971999
// becomes a function call
1998-
code_typet type(
1999-
{code_typet::parametert(java_reference_type(void_typet()))},
2000+
java_method_typet type(
2001+
{java_method_typet::parametert(java_reference_type(void_typet()))},
20002002
void_typet());
20012003
code_function_callt call;
20022004
call.function() = symbol_exprt(descriptor, type);
@@ -2105,8 +2107,8 @@ void java_bytecode_convert_methodt::convert_invoke(
21052107
const bool is_virtual(
21062108
statement == "invokevirtual" || statement == "invokeinterface");
21072109

2108-
code_typet &code_type = to_code_type(arg0.type());
2109-
code_typet::parameterst &parameters(code_type.parameters());
2110+
java_method_typet &code_type = to_java_method_type(arg0.type());
2111+
java_method_typet::parameterst &parameters(code_type.parameters());
21102112

21112113
if(use_this)
21122114
{
@@ -2128,7 +2130,7 @@ void java_bytecode_convert_methodt::convert_invoke(
21282130
code_type.set(ID_java_super_method_call, true);
21292131
}
21302132
reference_typet object_ref_type = java_reference_type(thistype);
2131-
code_typet::parametert this_p(object_ref_type);
2133+
java_method_typet::parametert this_p(object_ref_type);
21322134
this_p.set_this();
21332135
this_p.set_base_name("this");
21342136
parameters.insert(parameters.begin(), this_p);
@@ -2215,7 +2217,7 @@ void java_bytecode_convert_methodt::convert_invoke(
22152217
symbol.value.make_nil();
22162218
symbol.mode = ID_java;
22172219
assign_parameter_names(
2218-
to_code_type(symbol.type), symbol.name, symbol_table);
2220+
to_java_method_type(symbol.type), symbol.name, symbol_table);
22192221

22202222
debug() << "Generating codet: new opaque symbol: method '" << symbol.name
22212223
<< "'" << eom;
@@ -2945,7 +2947,7 @@ optionalt<exprt> java_bytecode_convert_methodt::convert_invoke_dynamic(
29452947
const source_locationt &location,
29462948
const exprt &arg0)
29472949
{
2948-
const code_typet &code_type = to_code_type(arg0.type());
2950+
const java_method_typet &code_type = to_java_method_type(arg0.type());
29492951

29502952
const optionalt<symbolt> &lambda_method_symbol = get_lambda_method_symbol(
29512953
lambda_method_handles,
@@ -2958,7 +2960,7 @@ optionalt<exprt> java_bytecode_convert_methodt::convert_invoke_dynamic(
29582960
"type"
29592961
<< eom;
29602962

2961-
const code_typet::parameterst &parameters(code_type.parameters());
2963+
const java_method_typet::parameterst &parameters(code_type.parameters());
29622964

29632965
pop(parameters.size());
29642966

@@ -3019,10 +3021,10 @@ void java_bytecode_initialize_parameter_names(
30193021
&local_variable_table,
30203022
symbol_table_baset &symbol_table)
30213023
{
3022-
// Obtain a std::vector of code_typet::parametert objects from the
3024+
// Obtain a std::vector of java_method_typet::parametert objects from the
30233025
// (function) type of the symbol
3024-
code_typet &code_type = to_code_type(method_symbol.type);
3025-
code_typet::parameterst &parameters = code_type.parameters();
3026+
java_method_typet &code_type = to_java_method_type(method_symbol.type);
3027+
java_method_typet::parameterst &parameters = code_type.parameters();
30263028

30273029
// Find number of parameters
30283030
unsigned slots_for_parameters = java_method_parameter_slots(code_type);

jbmc/src/java_bytecode/java_bytecode_instrument.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,8 +446,8 @@ void java_bytecode_instrumentt::instrument_code(codet &code)
446446
add_expr_instrumentation(block, code_function_call.lhs());
447447
add_expr_instrumentation(block, code_function_call.function());
448448

449-
const code_typet &function_type=
450-
to_code_type(code_function_call.function().type());
449+
const java_method_typet &function_type =
450+
to_java_method_type(code_function_call.function().type());
451451

452452
// Check for a null this-argument of a virtual call:
453453
if(function_type.has_this())

jbmc/src/java_bytecode/java_bytecode_language.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1068,7 +1068,7 @@ bool java_bytecode_languaget::convert_single_method(
10681068

10691069
// The return of an opaque function is a source of an otherwise invisible
10701070
// instantiation, so here we ensure we've loaded the appropriate classes.
1071-
const code_typet function_type = to_code_type(symbol.type);
1071+
const java_method_typet function_type = to_java_method_type(symbol.type);
10721072
if(
10731073
const pointer_typet *pointer_return_type =
10741074
type_try_dynamic_cast<pointer_typet>(function_type.return_type()))

jbmc/src/java_bytecode/java_bytecode_parser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ void java_bytecode_parsert::get_class_refs_rec(const typet &src)
610610
{
611611
if(src.id()==ID_code)
612612
{
613-
const code_typet &ct=to_code_type(src);
613+
const java_method_typet &ct = to_java_method_type(src);
614614
const typet &rt=ct.return_type();
615615
get_class_refs_rec(rt);
616616
for(const auto &p : ct.parameters())

jbmc/src/java_bytecode/java_bytecode_typecheck.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ Author: Daniel Kroening, [email protected]
1212
#ifndef CPROVER_JAVA_BYTECODE_JAVA_BYTECODE_TYPECHECK_H
1313
#define CPROVER_JAVA_BYTECODE_JAVA_BYTECODE_TYPECHECK_H
1414

15+
#include "java_types.h"
16+
1517
#include <set>
1618
#include <map>
1719

jbmc/src/java_bytecode/java_bytecode_typecheck_type.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,14 @@ void java_bytecode_typecheckt::typecheck_type(typet &type)
3838
}
3939
else if(type.id()==ID_code)
4040
{
41-
code_typet &code_type=to_code_type(type);
41+
java_method_typet &code_type = to_java_method_type(type);
4242
typecheck_type(code_type.return_type());
4343

44-
code_typet::parameterst &parameters=code_type.parameters();
44+
java_method_typet::parameterst &parameters = code_type.parameters();
4545

46-
for(code_typet::parameterst::iterator
47-
it=parameters.begin(); it!=parameters.end(); it++)
46+
for(java_method_typet::parameterst::iterator it = parameters.begin();
47+
it != parameters.end();
48+
it++)
4849
typecheck_type(it->type());
4950
}
5051
}

jbmc/src/java_bytecode/java_entry_point.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ static void create_initialize(symbol_table_baset &symbol_table)
3636
initialize.base_name=INITIALIZE_FUNCTION;
3737
initialize.mode=ID_java;
3838

39-
initialize.type = code_typet({}, empty_typet());
39+
initialize.type = java_method_typet({}, empty_typet());
4040

4141
code_blockt init_code;
4242

@@ -251,12 +251,12 @@ static void java_static_lifetime_init(
251251
bool is_java_main(const symbolt &function)
252252
{
253253
bool named_main = has_suffix(id2string(function.name), JAVA_MAIN_METHOD);
254-
const code_typet &function_type = to_code_type(function.type);
254+
const java_method_typet &function_type = to_java_method_type(function.type);
255255
const typet &string_array_type = java_type_from_string("[Ljava/lang/String;");
256256
// checks whether the function is static and has a single String[] parameter
257257
bool is_static = !function_type.has_this();
258258
// this should be implied by the signature
259-
const code_typet::parameterst &parameters = function_type.parameters();
259+
const java_method_typet::parameterst &parameters = function_type.parameters();
260260
bool has_correct_type = function_type.return_type().id() == ID_empty &&
261261
parameters.size() == 1 &&
262262
parameters[0].type().full_eq(string_array_type);
@@ -281,8 +281,8 @@ exprt::operandst java_build_arguments(
281281
object_factory_parameterst object_factory_parameters,
282282
const select_pointer_typet &pointer_type_selector)
283283
{
284-
const code_typet::parameterst &parameters=
285-
to_code_type(function.type).parameters();
284+
const java_method_typet::parameterst &parameters =
285+
to_java_method_type(function.type).parameters();
286286

287287
exprt::operandst main_arguments;
288288
main_arguments.resize(parameters.size());
@@ -299,7 +299,7 @@ exprt::operandst java_build_arguments(
299299
param_number<parameters.size();
300300
param_number++)
301301
{
302-
const code_typet::parametert &p=parameters[param_number];
302+
const java_method_typet::parametert &p = parameters[param_number];
303303
const irep_idt base_name=p.get_base_name().empty()?
304304
("argument#"+std::to_string(param_number)):p.get_base_name();
305305

@@ -352,14 +352,14 @@ void java_record_outputs(
352352
code_blockt &init_code,
353353
symbol_table_baset &symbol_table)
354354
{
355-
const code_typet::parameterst &parameters=
356-
to_code_type(function.type).parameters();
355+
const java_method_typet::parameterst &parameters =
356+
to_java_method_type(function.type).parameters();
357357

358358
exprt::operandst result;
359359
result.reserve(parameters.size()+1);
360360

361-
bool has_return_value=
362-
to_code_type(function.type).return_type()!=empty_typet();
361+
bool has_return_value =
362+
to_java_method_type(function.type).return_type() != empty_typet();
363363

364364
if(has_return_value)
365365
{
@@ -624,14 +624,14 @@ bool generate_java_start_function(
624624

625625
// if the method return type is not void, store return value in a new variable
626626
// named 'return'
627-
if(to_code_type(symbol.type).return_type()!=empty_typet())
627+
if(to_java_method_type(symbol.type).return_type() != empty_typet())
628628
{
629629
auxiliary_symbolt return_symbol;
630630
return_symbol.mode=ID_java;
631631
return_symbol.is_static_lifetime=false;
632632
return_symbol.name=JAVA_ENTRY_POINT_RETURN_SYMBOL;
633633
return_symbol.base_name="return";
634-
return_symbol.type=to_code_type(symbol.type).return_type();
634+
return_symbol.type = to_java_method_type(symbol.type).return_type();
635635

636636
symbol_table.add(return_symbol);
637637
call_main.lhs()=return_symbol.symbol_expr();
@@ -715,7 +715,7 @@ bool generate_java_start_function(
715715
symbolt new_symbol;
716716

717717
new_symbol.name=goto_functionst::entry_point();
718-
new_symbol.type = code_typet({}, empty_typet());
718+
new_symbol.type = java_method_typet({}, empty_typet());
719719
new_symbol.value.swap(init_code);
720720
new_symbol.mode=ID_java;
721721

jbmc/src/java_bytecode/java_object_factory.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1084,7 +1084,7 @@ void java_object_factoryt::gen_nondet_struct_init(
10841084

10851085
if(const auto func = symbol_table.lookup(init_method_name))
10861086
{
1087-
const code_typet &type = to_code_type(func->type);
1087+
const java_method_typet &type = to_java_method_type(func->type);
10881088
code_function_callt fun_call;
10891089
fun_call.function() = func->symbol_expr();
10901090
if(type.has_this())

0 commit comments

Comments
 (0)