Skip to content

Add two new methods to targetint for dwarf #560

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Mar 3, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 37 additions & 5 deletions ocaml/.depend
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,15 @@ utils/target_system.cmx : \
utils/target_system.cmi
utils/target_system.cmi :
utils/targetint.cmo : \
utils/numbers.cmi \
utils/misc.cmi \
utils/targetint.cmi
utils/targetint.cmx : \
utils/numbers.cmx \
utils/misc.cmx \
utils/targetint.cmi
utils/targetint.cmi :
utils/targetint.cmi : \
utils/numbers.cmi
utils/terminfo.cmo : \
utils/terminfo.cmi
utils/terminfo.cmx : \
Expand Down Expand Up @@ -340,13 +343,15 @@ parsing/lexer.cmo : \
utils/misc.cmi \
parsing/location.cmi \
parsing/docstrings.cmi \
utils/clflags.cmi \
parsing/lexer.cmi
parsing/lexer.cmx : \
utils/warnings.cmx \
parsing/parser.cmx \
utils/misc.cmx \
parsing/location.cmx \
parsing/docstrings.cmx \
utils/clflags.cmx \
parsing/lexer.cmi
parsing/lexer.cmi : \
parsing/parser.cmi \
Expand Down Expand Up @@ -522,6 +527,7 @@ typing/ctype.cmo : \
typing/types.cmi \
typing/type_immediacy.cmi \
typing/subst.cmi \
typing/primitive.cmi \
typing/predef.cmi \
typing/path.cmi \
utils/misc.cmi \
Expand All @@ -538,6 +544,7 @@ typing/ctype.cmx : \
typing/types.cmx \
typing/type_immediacy.cmx \
typing/subst.cmx \
typing/primitive.cmx \
typing/predef.cmx \
typing/path.cmx \
utils/misc.cmx \
Expand All @@ -553,6 +560,7 @@ typing/ctype.cmx : \
typing/ctype.cmi : \
typing/types.cmi \
typing/type_immediacy.cmi \
typing/primitive.cmi \
typing/path.cmi \
parsing/longident.cmi \
typing/ident.cmi \
Expand Down Expand Up @@ -690,6 +698,7 @@ typing/includecore.cmo : \
typing/typedtree.cmi \
typing/type_immediacy.cmi \
typing/printtyp.cmi \
typing/primitive.cmi \
typing/path.cmi \
typing/ident.cmi \
typing/env.cmi \
Expand All @@ -703,6 +712,7 @@ typing/includecore.cmx : \
typing/typedtree.cmx \
typing/type_immediacy.cmx \
typing/printtyp.cmx \
typing/primitive.cmx \
typing/path.cmx \
typing/ident.cmx \
typing/env.cmx \
Expand Down Expand Up @@ -1051,6 +1061,7 @@ typing/printtyped.cmo : \
parsing/location.cmi \
typing/ident.cmi \
utils/clflags.cmi \
typing/btype.cmi \
parsing/asttypes.cmi \
typing/printtyped.cmi
typing/printtyped.cmx : \
Expand All @@ -1063,6 +1074,7 @@ typing/printtyped.cmx : \
parsing/location.cmx \
typing/ident.cmx \
utils/clflags.cmx \
typing/btype.cmx \
parsing/asttypes.cmi \
typing/printtyped.cmi
typing/printtyped.cmi : \
Expand Down Expand Up @@ -1260,6 +1272,7 @@ typing/typecore.cmo : \
utils/misc.cmi \
parsing/longident.cmi \
parsing/location.cmi \
utils/local_store.cmi \
typing/ident.cmi \
parsing/extensions.cmi \
typing/env.cmi \
Expand Down Expand Up @@ -1291,6 +1304,7 @@ typing/typecore.cmx : \
utils/misc.cmx \
parsing/longident.cmx \
parsing/location.cmx \
utils/local_store.cmx \
typing/ident.cmx \
parsing/extensions.cmx \
typing/env.cmx \
Expand All @@ -1313,6 +1327,7 @@ typing/typecore.cmi : \
typing/env.cmi \
typing/ctype.cmi \
utils/clflags.cmi \
typing/btype.cmi \
parsing/asttypes.cmi
typing/typedecl.cmo : \
utils/warnings.cmi \
Expand Down Expand Up @@ -1562,6 +1577,7 @@ typing/typemod.cmo : \
utils/load_path.cmi \
typing/includemod.cmi \
typing/ident.cmi \
typing/envaux.cmi \
typing/env.cmi \
typing/ctype.cmi \
utils/config.cmi \
Expand Down Expand Up @@ -1594,6 +1610,7 @@ typing/typemod.cmx : \
utils/load_path.cmx \
typing/includemod.cmx \
typing/ident.cmx \
typing/envaux.cmx \
typing/env.cmx \
typing/ctype.cmx \
utils/config.cmx \
Expand Down Expand Up @@ -2369,7 +2386,6 @@ asmcomp/cmm_helpers.cmo : \
asmcomp/strmatch.cmi \
asmcomp/proc.cmi \
typing/primitive.cmi \
utils/numbers.cmi \
utils/misc.cmi \
lambda/lambda.cmi \
lambda/debuginfo.cmi \
Expand All @@ -2392,7 +2408,6 @@ asmcomp/cmm_helpers.cmx : \
asmcomp/strmatch.cmx \
asmcomp/proc.cmx \
typing/primitive.cmx \
utils/numbers.cmx \
utils/misc.cmx \
lambda/lambda.cmx \
lambda/debuginfo.cmx \
Expand Down Expand Up @@ -2501,13 +2516,15 @@ asmcomp/coloring.cmi :
asmcomp/comballoc.cmo : \
asmcomp/reg.cmi \
asmcomp/mach.cmi \
lambda/lambda.cmi \
lambda/debuginfo.cmi \
utils/config.cmi \
asmcomp/arch.cmo \
asmcomp/comballoc.cmi
asmcomp/comballoc.cmx : \
asmcomp/reg.cmx \
asmcomp/mach.cmx \
lambda/lambda.cmx \
lambda/debuginfo.cmx \
utils/config.cmx \
asmcomp/arch.cmx \
Expand Down Expand Up @@ -3162,6 +3179,7 @@ middle_end/compilenv.cmi : \
middle_end/flambda/simple_value_approx.cmi \
middle_end/flambda/base_types/set_of_closures_id.cmi \
middle_end/linkage_name.cmi \
lambda/lambda.cmi \
typing/ident.cmi \
middle_end/flambda/export_info.cmi \
middle_end/compilation_unit.cmi \
Expand Down Expand Up @@ -3240,9 +3258,11 @@ middle_end/printclambda_primitives.cmx : \
middle_end/printclambda_primitives.cmi : \
middle_end/clambda_primitives.cmi
middle_end/semantics_of_primitives.cmo : \
lambda/lambda.cmi \
middle_end/clambda_primitives.cmi \
middle_end/semantics_of_primitives.cmi
middle_end/semantics_of_primitives.cmx : \
lambda/lambda.cmx \
middle_end/clambda_primitives.cmx \
middle_end/semantics_of_primitives.cmi
middle_end/semantics_of_primitives.cmi : \
Expand Down Expand Up @@ -3556,6 +3576,7 @@ lambda/translcore.cmo : \
typing/ident.cmi \
typing/env.cmi \
lambda/debuginfo.cmi \
typing/ctype.cmi \
utils/config.cmi \
utils/clflags.cmi \
typing/btype.cmi \
Expand Down Expand Up @@ -3584,12 +3605,14 @@ lambda/translcore.cmx : \
typing/ident.cmx \
typing/env.cmx \
lambda/debuginfo.cmx \
typing/ctype.cmx \
utils/config.cmx \
utils/clflags.cmx \
typing/btype.cmx \
parsing/asttypes.cmi \
lambda/translcore.cmi
lambda/translcore.cmi : \
typing/types.cmi \
typing/typedtree.cmi \
typing/path.cmi \
parsing/location.cmi \
Expand Down Expand Up @@ -3654,6 +3677,7 @@ lambda/translobj.cmo : \
lambda/lambda.cmi \
typing/ident.cmi \
typing/env.cmi \
lambda/debuginfo.cmi \
utils/config.cmi \
utils/clflags.cmi \
typing/btype.cmi \
Expand All @@ -3665,6 +3689,7 @@ lambda/translobj.cmx : \
lambda/lambda.cmx \
typing/ident.cmx \
typing/env.cmx \
lambda/debuginfo.cmx \
utils/config.cmx \
utils/clflags.cmx \
typing/btype.cmx \
Expand All @@ -3681,7 +3706,6 @@ lambda/translprim.cmo : \
typing/primitive.cmi \
typing/predef.cmi \
typing/path.cmi \
utils/misc.cmi \
lambda/matching.cmi \
parsing/location.cmi \
lambda/lambda.cmi \
Expand All @@ -3699,7 +3723,6 @@ lambda/translprim.cmx : \
typing/primitive.cmx \
typing/predef.cmx \
typing/path.cmx \
utils/misc.cmx \
lambda/matching.cmx \
parsing/location.cmx \
lambda/lambda.cmx \
Expand Down Expand Up @@ -3773,6 +3796,7 @@ file_formats/cmt_format.cmi : \
file_formats/cmi_format.cmi
file_formats/cmx_format.cmi : \
utils/misc.cmi \
lambda/lambda.cmi \
middle_end/flambda/export_info.cmi \
middle_end/clambda.cmi
file_formats/cmxs_format.cmi : \
Expand Down Expand Up @@ -3910,6 +3934,7 @@ middle_end/flambda/augment_specialised_args.cmo : \
middle_end/flambda/pass_wrapper.cmi \
middle_end/flambda/parameter.cmi \
utils/misc.cmi \
lambda/lambda.cmi \
middle_end/internal_variable_names.cmi \
utils/int_replace_polymorphic_compare.cmi \
middle_end/flambda/inlining_cost.cmi \
Expand All @@ -3929,6 +3954,7 @@ middle_end/flambda/augment_specialised_args.cmx : \
middle_end/flambda/pass_wrapper.cmx \
middle_end/flambda/parameter.cmx \
utils/misc.cmx \
lambda/lambda.cmx \
middle_end/internal_variable_names.cmx \
utils/int_replace_polymorphic_compare.cmx \
middle_end/flambda/inlining_cost.cmx \
Expand Down Expand Up @@ -4573,6 +4599,7 @@ middle_end/flambda/flambda_utils.cmi : \
middle_end/flambda/base_types/set_of_closures_id.cmi \
middle_end/flambda/projection.cmi \
middle_end/flambda/parameter.cmi \
lambda/lambda.cmi \
middle_end/internal_variable_names.cmi \
middle_end/flambda/flambda.cmi \
middle_end/flambda/base_types/closure_id.cmi
Expand Down Expand Up @@ -4711,6 +4738,7 @@ middle_end/flambda/inline_and_simplify.cmo : \
middle_end/flambda/base_types/static_exception.cmi \
middle_end/flambda/simplify_primitives.cmi \
middle_end/flambda/simple_value_approx.cmi \
middle_end/semantics_of_primitives.cmi \
middle_end/flambda/remove_unused_arguments.cmi \
middle_end/flambda/remove_free_vars_equal_to_args.cmi \
middle_end/flambda/projection.cmi \
Expand Down Expand Up @@ -4754,6 +4782,7 @@ middle_end/flambda/inline_and_simplify.cmx : \
middle_end/flambda/base_types/static_exception.cmx \
middle_end/flambda/simplify_primitives.cmx \
middle_end/flambda/simple_value_approx.cmx \
middle_end/semantics_of_primitives.cmx \
middle_end/flambda/remove_unused_arguments.cmx \
middle_end/flambda/remove_free_vars_equal_to_args.cmx \
middle_end/flambda/projection.cmx \
Expand Down Expand Up @@ -5128,16 +5157,19 @@ middle_end/flambda/lift_let_to_initialize_symbol.cmi : \
middle_end/backend_intf.cmi
middle_end/flambda/parameter.cmo : \
middle_end/variable.cmi \
lambda/lambda.cmi \
utils/int_replace_polymorphic_compare.cmi \
utils/identifiable.cmi \
middle_end/flambda/parameter.cmi
middle_end/flambda/parameter.cmx : \
middle_end/variable.cmx \
lambda/lambda.cmx \
utils/int_replace_polymorphic_compare.cmx \
utils/identifiable.cmx \
middle_end/flambda/parameter.cmi
middle_end/flambda/parameter.cmi : \
middle_end/variable.cmi \
lambda/lambda.cmi \
utils/identifiable.cmi \
middle_end/compilation_unit.cmi
middle_end/flambda/pass_wrapper.cmo : \
Expand Down
9 changes: 9 additions & 0 deletions ocaml/utils/targetint.ml
Original file line number Diff line number Diff line change
Expand Up @@ -102,3 +102,12 @@ include (val
| 64 -> (module Int64)
| _ -> assert false
) : S)

let size_in_bytes_as_targetint =
match size with 32 -> of_int32 4l | 64 -> of_int64 8L | _ -> assert false

let nonnegative_to_uint64_exn t =
match repr t with
| Int32 t -> Numbers.Uint64.of_nonnegative_int32_exn t
| Int64 t -> Numbers.Uint64.of_nonnegative_int64_exn t

6 changes: 6 additions & 0 deletions ocaml/utils/targetint.mli
Original file line number Diff line number Diff line change
Expand Up @@ -205,3 +205,9 @@ val repr : t -> repr

val print : Format.formatter -> t -> unit
(** Print a target integer to a formatter. *)

val size_in_bytes_as_targetint : t
(** The width of a target integer in bytes, expressed as a value of type [t]. *)

val nonnegative_to_uint64_exn : t -> Numbers.Uint64.t
(** Convert the non-negative given target integer to an unsigned 64-bit integer. *)