Use consistent integer types for some RTTI fields.

runtime/mercury_type_info.h:
    Use unsigned integer types for a few RTTI structure fields that
    are known to hold non-negative values.

    Add comments for other field types that could be changed later.

compiler/rtti.m:
    Use fixed size integer types for fields matching the size
    and signedness of the corresponding C RTTI structure fields.

    Encode type ctor flags in a uint16 instead of int.

    Make type_ctor_details_num_ptags and type_ctor_details_num_functors
    return a maybe value, instead of a negative value to represent no
    primary tags or no function symbols, respectively.

compiler/type_ctor_info.m:
    Conform to type changes.

    Use uint16 to represent the "contains var" bit vector.

compiler/rtti_out.m:
compiler/rtti_to_mlds.m:
    Conform to type changes.

    Add comments to make it easier to find the code that writes out
    each particular RTTI structure field.

compiler/ml_util.m:
    Add helper functions.

compiler/add_special_pred.m:
compiler/du_type_layout.m:
compiler/erl_rtti.m:
compiler/erlang_rtti.m:
compiler/hlds_data.m:
compiler/llds_out_data.m:
compiler/ml_unify_gen_construct.m:
compiler/opt_debug.m:
compiler/pseudo_type_info.m:
compiler/stack_layout.m:
compiler/unify_gen_construct.m:
    Conform to type changes.

compiler/parse_type_defn.m:
compiler/prog_data.m:
    Use uint32 for functor ordinal numbers.

library/rtti_implementation.m:
    Use fixed size integer types for RTTI field accessor functions,
    and update callers.

java/runtime/DuArgLocn.java:
java/runtime/DuExistInfo.java:
java/runtime/DuExistLocn.java:
java/runtime/DuFunctorDesc.java:
java/runtime/TypeCtorInfo_Struct.java:
    Use integer types in RTTI structure definitions for Java that match
    the types in the C versions of the same structures.

runtime/mercury_dotnet.cs.in:
    Use integer types in RTTI structure definitions for C# that match
    the types in the C versions of the same structures.
This commit is contained in:
Peter Wang
2018-11-19 12:37:36 +11:00
parent 5686126f21
commit 5f7d3e6bb2
28 changed files with 582 additions and 376 deletions

View File

@@ -10,10 +10,10 @@ package jmercury.runtime;
public class DuFunctorDesc implements java.io.Serializable {
public java.lang.String du_functor_name;
public int du_functor_orig_arity;
public int du_functor_arg_type_contains_var;
public short du_functor_orig_arity;
public short du_functor_arg_type_contains_var;
public Sectag_Locn du_functor_sectag_locn;
public int du_functor_primary;
public byte du_functor_primary;
public int du_functor_secondary;
public int du_functor_ordinal;
// XXX PseudoTypeInfo's have not been implemented properly
@@ -30,10 +30,10 @@ public class DuFunctorDesc implements java.io.Serializable {
}
public void init(java.lang.String functor_name,
int orig_arity,
int arg_type_contains_var,
short orig_arity,
short arg_type_contains_var,
int sectag_locn,
int primary,
byte primary,
int secondary,
int ordinal,
// XXX why do we need to use Object here?