jon.recoil.org

Module Asm_targets.Asm_symbol

val should_be_escaped : char -> bool
type visibility =
  1. | Global
  2. | Local

Symbol visibility for linking. Global symbols are exported and can be referenced from other compilation units. Local symbols are file-scope and can only be referenced within the same file.

Comparison and hashing of symbols is based on their encoded form (as returned by encode), so two symbols that produce the same assembly output are considered equal regardless of how they were constructed.

include Identifiable.S
type t
module T : Identifiable.Thing with type t = t
include Identifiable.Thing with type t := T.t
include Hashtbl.HashedType with type t := T.t
val equal : T.t -> T.t -> bool

The equality predicate used to compare keys.

val hash : T.t -> int

A hashing function on keys. It must be such that if two keys are equal according to equal, then they have identical hash values as computed by hash. Examples: suitable (equal, hash) pairs for arbitrary key types include

  • ((=), hash) for comparing objects by structure (provided objects do not contain floats)
  • ((fun x y -> compare x y = 0), hash) for comparing objects by structure and handling Stdlib.nan correctly
  • ((==), hash) for comparing objects by physical equality (e.g. for mutable or cyclic objects).
include Map.OrderedType with type t := T.t
val compare : T.t -> T.t -> int

A total ordering function over the keys. This is a two-argument function f such that f e1 e2 is zero if the keys e1 and e2 are equal, f e1 e2 is strictly negative if e1 is smaller than e2, and f e1 e2 is strictly positive if e1 is greater than e2. Example: a suitable ordering function is the generic structural comparison function Stdlib.compare.

val output : out_channel -> T.t -> unit
val print : Format.formatter -> T.t -> unit
module Set : Identifiable.Set with module T := T
module Map : Identifiable.Map with module T := T
module Tbl : Identifiable.Tbl with module T := T
val create : visibility:visibility -> string -> t

create creates a new symbol with the given visibility.

val create_global : string -> t

create_global creates a global symbol. Shorthand for create ~visibility:Global.

val create_local : string -> t

create_local creates a local symbol. Shorthand for create ~visibility:Local.

val create_without_encoding : visibility:visibility -> string -> t

create_without_encoding creates a symbol from an already-encoded string. Use this when you have a string that already includes the symbol prefix (e.g., "_camlFoo" on macOS). The string will be used as-is without further encoding.

val encode : t -> string
val to_raw_string : t -> string
val visibility : t -> visibility
val is_global : t -> bool
val is_local : t -> bool
module Predef : sig ... end

We predefine several non-user generated symbols.