Bug 7458: Factor out calls to error routines

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (op--call-error-iep): Move from here.

* sources/dfmc/llvm-back-end/llvm-ops.dylan
  (op--call-error-iep): Move to here. Change to use op--call.

* sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan
  (primitive primitive-slot-value): Change generation of calls to
   unbound-instance-slot to use op--call-error-iep.

* sources/dfmc/llvm-back-end/llvm-emit-type-check.dylan
  (op--type-check-error): Change generation of calls to
   type-check-error to use op--call-error-iep.

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-computation on <slot-value>): Change generation of calls to
   unbound-instance-slot to use op--call-error-iep.
Bug 7458: Rename llvm-entry-point-function-type

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (llvm-entry-point-descriptor-function-type): Rename from
   llvm-entry-point-function-type.
  (make-entry-point-function): Change to call
   llvm-entry-point-descriptor-function-type.
Bug 7458: Generate position variants for n-arg entry points

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (entry-point-emitter-method): Add position argument to emitter methods.
  (llvm-entry-point-function): Accept argument position as a keyword parameter.
   Generate names based on position and total argument count.
  (make-entry-point-function): Accept argument position as a new parameter.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  (generate-runtime-entry-point): Accept argument position as a new parameter,
   and pass position to the emitter method.
  (generate-runtime-entry-points): Enumerate positions for entry points marked
   as #"cross".
Bug 7458: Refine engine node entry point conventions

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (op--engine-node-call): Remove unused argument count operand. Split out
   function call code as op--chain-to-engine-entry-point.
  (op--chain-to-engine-entry-point): New method implementing chaining to
   an engine node's entry point. Refine engine node entry point conventions.
  (op--engine-node-entry-point): New method implementing retrieval of engine
   node entry points from <engine-node> instances.
  (entry-point gf-xep, entry-point gf-optional-xep): Don't pass argument count
   to op--engine-node-call.

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-call on <engine-node-call>): Call using op--chain-to-engine-entry-point.
  (emit-call on <simple-call>): Don't pass argument count to
   op--engine-node-call.
Bug 7458: Use op--call to chain to engine nodes

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (op--chain-to-engine-entry-point): Use op--call to chain to engine node
   entry points.
Bug 7458: Implement discriminator engine node entry points

* sources/dfmc/modeling/namespaces.dylan
  (&module dispatch-engine): Export %gf-dispatch-linear-by-class.

* sources/dfmc/modeling/functions.dylan
  (discriminator$m-restp): Uncomment definition.

* sources/dfmc/modeling/modeling-library.dylan
  (module dfmc-modeling): Export properties$m-entry-type,
   properties$v-entry-type, discriminator$v-argnum, discriminator$s-argnum,
   discriminator$m-argnum, discriminator$v-nrequired, discriminator$s-nrequired,
   discriminator$m-nrequired, discriminator$m-restp,
   $engine-node-entry-point-names, and $engine-node-callback-names.

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (entry-point discriminate-on-argument): New discriminator entry point.
  (entry-point if-type-discriminator): New discriminator entry point.
  (entry-point typecheck-discriminator): New discriminator entry point.
  (entry-point monomorphic-by-class-discriminator): New discriminator entry
   point.

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  (primitive primitive-initialize-discriminator): Implement a selection
   branch tree to choose the correct entry point for a discriminator engine node.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  ($runtime-referenced-objects): Add $absent-engine-node and
   $inapplicable-engine-node to the set of referenced objects.
Bug 7440: Fix ins--if case with no successors

* sources/lib/llvm/llvm-builder.dylan
  (do-ins--if): Don't insert a continuation block if control does not reach
   the end of either branch.

* sources/lib/llvm/tests/llvm-builder-test.dylan
  (macro-test ins--if-test): Test the case where control does not reach
   the end of either branch.
Bug 7458: Constant versions of tagging routines

* sources/dfmc/llvm-back-end/llvm-ops.dylan
  (op--tag-integer on <abstract-integer>): New method to construct a constant
   tagged representation of an <integer>.
  (op--tag-character on <llvm-value>): New method to tag a value as a character.
  (op--tag-character on <character>): New method to construct a constant
   tagged representation of a <character>.

* sources/dfmc/llvm-back-end/llvm-emit-object.dylan
  (emit-object on <abstract-integer>): Define using op--tag-integer.
  (emit-object on <character>): Define using op--tag-character.
Bug 7458: Implement entry points for terminal engine nodes

* sources/dfmc/modeling/functions.dylan
  ($engine-node-entry-point-names): The entry point for
   <ambiguous-methods-engine-node> is general-engine-node-spread rather than
   a separate ambiguous-methods entry point.
  (slotdiscrim$v-offset): Un-comment definition.

* sources/dfmc/modeling/modeling-library.dylan
  (module defmc-modeling): Export smen$v-nrequired, smen$s-nrequired,
   smen$m-nrequired, smen$v-restp, smen$m-restp, and slotdiscrim$v-offset.

* sources/dfmc/modeling/namespaces.dylan
  (&module dispatch-engine): Export %gf-dispatch-boxed-class-slot-getter
   and %gf-dispatch-boxed-class-slot-setter.

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (op--invalid-keyword-trap): New utility method for emitting
   a call to the invalid-keyword-trap routine in the dylan library.
  (op--engine-node-callback): New utility method for emitting the retrieval of
   the callback function pointer from an <engine-node> instance.
  (op--parent-gf): New utility method for emitting code to find the
   <generic-function> corresponding to a <dispatch-starter>.
  (entry-point general-engine-node-n, entry-point general-engine-node-1,
   entry-point general-engine-node-2, entry-point general-engine-node-3,
   entry-point general-engine-node-spread, entry-point single-method,
   entry-point implicit-keyed-single-method,
   entry-point explicit-keyed-single-method,
   entry-point unrestricted-keyed-single-method,
   entry-point cache-header, entry-point profiling-cache-header,
   entry-point boxed-instance-slot-getter,
   entry-point boxed-instance-slot-setter,
   entry-point boxed-repeated-instance-slot-getter,
   entry-point boxed-repeated-instance-slot-setter,
   entry-point raw-byte-repeated-instance-slot-getter,
   entry-point raw-byte-repeated-instance-slot-setter): New <engine-node>
   entry points.
  (op--reconstruct-args-from-mepargs): New utility method for emitting
   code to merge together a complete argument list from the required arguments
   and optionals vector passed in varargs.
  ($null-object-pointer): New constant.
  (op--verify-keywords): New utility method to emit code to validate keywords
   passed in an optionals vector against either a vector of keywords, or
   a keyword-specifiers vector of keyword and default value pairs.
  (op--slot-access-engine-node-offset): New utility method to emit the retrieval
   of the properties slot of a <slot-access-engine-node>.
  (entry-point discriminate-on-argument): Refactor implementation to use
   op--engine-node-callback.

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  (primitive primitive-initialize-engine-node): Implement generation of
   jump tables for the non-discriminator engine node entry points.
  (op--initialize-single-method-engine-node): New method for generating
   code to initialize a <single-method-engine-node> entry points.
  ($signature-number-required-mask, $signature-key-p-mask,
   $signature-rest-p-mask, $signature-optionals-p-mask): New constants.
  (op--initialize-cache-header-engine-node): New method for generating
   code to initialize a <cache-header-engine-node> entry points.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  ($runtime-referenced-objects): Add references to odd-keyword-arguments-error,
   invalid-keyword-trap, unbound-instance-slot, unbound-repeated-slot,
   repeated-slot-getter-index-out-of-range-trap, and
   repeated-slot-setter-index-out-of-range-trap for use by engine node entry
   points.