mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-14 05:12:33 +00:00
Branches: main
RTTI improvements for Java backend. io.write/3 works for some simple types
(builtin types and non-existential d.u. types).
compiler/mlds_to_java.m:
Fix problem with cyclic RTTI definitions. Initialisers could refer to
other RTTI structures which weren't yet allocated, leading to fields
being null. The fix is to allocate all top-level RTTI objects first
and initialise in a second phase.
java/runtime/DuExistInfo.java:
java/runtime/DuExistLocn.java:
java/runtime/DuFunctorDesc.java:
java/runtime/EnumFunctorDesc.java:
java/runtime/ForeignEnumFunctorDesc.java:
java/runtime/TypeClassConstraint.java:
java/runtime/TypeClassDeclStruct.java:
java/runtime/TypeClassId.java:
java/runtime/TypeCtorInfo_Struct.java:
java/runtime/TypeInfo_Struct.java:
Separate constructors into constructors for the initial allocation,
and an `init' method to fill in the fields.
java/runtime/MethodPtr.java:
Use variadic method support to simplify semidet_call_* and
result_call_* in rtti_implementation.m.
library/builtin.m:
Make Java definitions of builtin.unify/2 and builtin.compare/3 call
rtti_implementation.generic_unify and generic_compare.
library/private_builtin.m:
Add missing MR_TYPECTOR_REP_FOREIGN_ENUM{,_USEREQ} constants
for C# and Java.
library/rtti_implementation.m:
Fix and add missing Java versions of many foreign_procs.
Add more attributes to foreign_procs.
Clean up the code a bit (fewer casts and ^ field access functions).
README.Java:
Bump Java version requirement to J2SE 1.5 or higher.
38 lines
1021 B
Java
38 lines
1021 B
Java
//
|
|
// Copyright (C) 2004 The University of Melbourne.
|
|
// This file may only be copied under the terms of the GNU Library General
|
|
// Public License - see the file COPYING.LIB in the Mercury distribution.
|
|
//
|
|
|
|
package mercury.runtime;
|
|
|
|
// This corresponds to the C type MR_TypeClassId
|
|
// in runtime/mercury_typeclass_info.h.
|
|
|
|
public class TypeClassId {
|
|
public String tc_id_module_name;
|
|
public String tc_id_name;
|
|
public int tc_id_arity;
|
|
public int tc_id_num_type_vars; // XXX redundant
|
|
public int tc_id_num_methods; // XXX redundant
|
|
public String[] tc_id_var_names;
|
|
public TypeClassMethod[] tc_id_methods;
|
|
|
|
public TypeClassId()
|
|
{
|
|
}
|
|
|
|
public void init(String module_name, String name, int arity,
|
|
int num_type_vars, int num_methods,
|
|
String[] var_names, TypeClassMethod[] methods)
|
|
{
|
|
tc_id_module_name = module_name;
|
|
tc_id_name = name;
|
|
tc_id_arity = arity;
|
|
tc_id_num_type_vars = num_type_vars;
|
|
tc_id_num_methods = num_methods;
|
|
tc_id_var_names = var_names;
|
|
tc_id_methods = methods;
|
|
}
|
|
}
|