[dylan-lang/opendylan] 09b50f: Bug 7458: Factor out engine node call code emissio...

GitHub <[email protected]>
Newsgroups gmane.comp.lang.dylan.gwydion.cvs
Message-ID <54bc433373e1c_4d523fa6a18df2c08514b@hookshot-fe5-cp1-prd.iad.github.net.mail>
  Branch: refs/heads/master
  Home:   https://github.com/dylan-lang/opendylan
  Commit: 09b50fab25c579766826ee16ab48e92d5bff1037
      https://github.com/dylan-lang/opendylan/commit/09b50fab25c579766826ee16ab48e92d5bff1037
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan

  Log Message:
  -----------
  Bug 7458: Factor out engine node call code emission

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (op--engine-node-call): New method for emitting a call through an
   <engine-node> entry point. Refine calling conventions.
  (entry-point-descriptor gf-xep): Refactor to use op--engine-node-call.
  (entry-point-descriptor gf-optional-xep): Refactor to use
   op--engine-node-call.


  Commit: c3e92f7f31f0a7fabf73590a8fe1d87105873d9e
      https://github.com/dylan-lang/opendylan/commit/c3e92f7f31f0a7fabf73590a8fe1d87105873d9e
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan

  Log Message:
  -----------
  Bug 7458: Emit code for function calls

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-call on <function-call> and <object>): Remove.
  (emit-call on <simple-call> and <&iep>): Pass <function> objects to IEPs
   that need them.
  (emit-call on <method-call> and <&iep>): New method.
  (emit-call on <engine-node-call> and <object>): New method.
  (emit-call on <simple-call> and <object>): New method.
  (emit-call on <simple-call> and <&generic-function>): New method.
  (emit-call on <apply> and <object>): New method.
  (emit-call on <method-apply> and <object>): New method.

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (entry-point-descriptor apply-mep): Temporary placeholder definition.


  Commit: 0447771cc683704e3fd0d7feaa758589e4fc9fed
      https://github.com/dylan-lang/opendylan/commit/0447771cc683704e3fd0d7feaa758589e4fc9fed
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan

  Log Message:
  -----------
  Bug 7458: Allow defining single-instance entry point functions

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (entry-point-emitter-method): Allow passing #f as a count.
  (llvm-entry-point-function): Allow passing #f as a count, and generate
   a name without a numeric suffix.
  (make-entry-point-function, llvm-entry-point-function-type): Allow passing
   #f as a count.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  (generate-runtime-entry-point): Allow passing #f as a count.
  (generate-runtime-entry-points): Generate a single instance if the
   "singular" attribute is specified in the entry-point definition.


  Commit: 35c13ec88cd5c45c303279a0ec1f90eb75fca9f7
      https://github.com/dylan-lang/opendylan/commit/35c13ec88cd5c45c303279a0ec1f90eb75fca9f7
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan

  Log Message:
  -----------
  Bug 7458: Generate XEPs for slot accessor functions

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (op--slotacc-xep): New utility emitter method.
  (entry-point slotacc-single-q-instance-getter-xep,
   entry-point slotacc-single-q-class-getter-xep,
   entry-point slotacc-single-q-instance-setter-xep,
   entry-point slotacc-single-q-class-setter-xep,
   entry-point slotacc-repeated-instance-getter-xep,
   entry-point slotacc-repeated-instance-setter-xep): Implement.

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  (primitive primitive-set-accessor-method-xep): Implement dynamic setting of
   slot accessor functions to one of the above XEPs.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  ($runtime-referenced-functions): Add slot accessor IEPs to list of
   functions referenced within the generated runtime.


  Commit: 4126a0cbd8928223078c4c494e159b103f4ab793
      https://github.com/dylan-lang/opendylan/commit/4126a0cbd8928223078c4c494e159b103f4ab793
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
    M sources/dfmc/llvm-back-end/llvm-back-end-library.dylan
    M sources/dfmc/llvm-back-end/llvm-back-end.dylan
    M sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
    M sources/dfmc/llvm-back-end/llvm-emit-type-check.dylan
    M sources/dfmc/llvm-back-end/llvm-mv.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-nlx.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-thread.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives.dylan
    M sources/dfmc/llvm-back-end/llvm-targets.dylan

  Log Message:
  -----------
  Bug 7458: Implement non-local exit and return

* sources/dfmc/llvm-back-end/llvm-back-end.dylan
  (llvm-bef-struct-type): New <llvm-back-end> slot containing the raw
   struct type of bind-exit frames.
  (%raw-struct-field-index): Rename from %teb-struct-field-index as it
   now also contains bind-exit frame struct fields.
  (initialize): Call initialize-bef-struct-type.

* sources/dfmc/llvm-back-end/llvm-back-end-library.dylan
  (module dfmc-llvm-back-end): Export llvm-bef-struct-type.

* sources/dfmc/llvm-back-end/llvm-primitives-thread.dylan
  (initialize-teb-struct-type, op--teb-getelementptr): Adapt to rename
   of %teb-struct-field-index to %raw-struct-field-index.

* sources/dfmc/llvm-back-end/llvm-primitives-nlx.dylan
  (<nlx-info>): New class for representing non-local exit scopes.
  (*live-nlx*): New thread variable representing the current non-local
   exit scope.
  (op--call): New method for performing ins--invoke within an NLX block,
   or ins--call otherwise.
  ($llvm-eh-personality-function-type): New constant representing the
   type of exception handling personality functions.
  ($llvm-opendylan-eh-personality-function): New constant for the
   exception handling personality function for Open Dylan.
  ($llvm-eh-landingpad-type): New constant for the value type of landingpad
   instructions.
  (op--landingpad): New utility method for inserting a landingpad instruction.
  (op--resume): New utility function for inserting a resume instruction
   (if there is no outer NLX block) or a branch to an existing resume/cleanup
   path.
  (initialize-bef-struct-type): New back-end initialization method for
   defining the Bind Exit Frame raw struct type.
  (op--bef-getelementptr): New utility function for indexing into bind-exit
   frame fields.
  (op--typeid): New utility method for instantiating a new global constant
   whose address is used as an LLVM exception handling type ID.
  (op--allocate-bef): New utility method for emitting the
   stack-allocation of a new bind-exit frame object and initializing
   its fields.
  (primitive primitive-nlx): New auxiliary C primitive declaration.

* sources/dfmc/llvm-back-end/llvm-primitives.dylan
  (primitive-call-emitter-method): Use op--call if the referenced runtime
   primitive can unwind (as determined by the can-unwind attribute),
   or ins--call if it can not.

* sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan
  (primitive primitive-slot-value): Use op--call.

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  (primitive-mep-apply-with-optionals,
   primitive-engine-node-apply-with-optionals): Mark as can-unwind.
  (primitive-apply): Mark as can-unwind, and use op--call.

* sources/dfmc/llvm-back-end/llvm-emit-type-check.dylan
  (op--type-check-error): Use op--call.

* sources/dfmc/llvm-back-end/llvm-mv.dylan
  (op--set-bef-value): New method for emitting the storing of multiple
   values into a bind-exit frame.
  (primitive-bef-values): New auxiliary primitive for retrieving values
   stored in a bind-exit frame.

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-call, emit-computation on <slot-value>,
   emit-primitive-call on <primitive-call> and <&c-function>,
   emit-primitive-call on <primitive-indirect-call> and <&c-function>):
   Use op--call.
  (emit-computation on <bind-exit>): Emit local and nonlocal bind-exit and
   the following control and data flow merge.
  (emit-computation on <exit>): Emit local and nonlocal exits and the return
   of values through bind-exit frames.
  (emit-computation on <unwind-protect>): Emit code for cleanup blocks.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  (generate-runtime-header): Generate a struct declaration for the BEF
   structure as well as the TEB structure.


  Commit: bad4d56b8283de39e0bd5b0314006be341c6cd04
      https://github.com/dylan-lang/opendylan/commit/bad4d56b8283de39e0bd5b0314006be341c6cd04
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-mv.dylan

  Log Message:
  -----------
  Bug 7458: Factor out copies to and from the MV area

* sources/dfmc/llvm-back-end/llvm-mv.dylan
  (op--copy-from-mv-area): New emitter method.
  (op--copy-into-mv-area): New emitter method.
  (op--protect-temporary): Refactor to use op--copy-from-mv-area.
  (op--restore-temporary): Refactor to use op--copy-into-mv-area.
  (op--set-bef-value): Refactor to use op--copy-from-mv-area.
  (primitive-bef-values): Refactor to use op--copy-into-mv-area.


  Commit: 510ac16c73a969f38d570d39e7cd7a3eb2a332fe
      https://github.com/dylan-lang/opendylan/commit/510ac16c73a969f38d570d39e7cd7a3eb2a332fe
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-mv.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan

  Log Message:
  -----------
  Bug 7458: Implement primitive-values

* sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan
  (primitive primitive-values): Move (empty) definition from here.

* sources/dfmc/llvm-back-end/llvm-mv.dylan
  (primitive primitive-values): Move definition here and implement
   returning values from a <simple-object-vector>.


  Commit: 5e9125e903241fe6ba8497ef73a6fced954d03e5
      https://github.com/dylan-lang/opendylan/commit/5e9125e903241fe6ba8497ef73a6fced954d03e5
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-back-end-library.dylan
    M sources/dfmc/llvm-back-end/llvm-back-end-types.dylan
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan
    M sources/dfmc/llvm-linker/llvm-link-object.dylan

  Log Message:
  -----------
  Bug 7458: Base entry point object references on definitions

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  ($number-xeps, $number-meps, $xep-string, $rest-xep-string,
   $rest-key-xep-string, $gf-xep-string, $gf-optional-xep-string,
   $rest-key-mep-string, emit-name-internal on <&lambda-xep>,
   emit-name-internal on <&slot-accessor-xep>, $special-gf-engine-max-args,
   emit-name-internal on <&keyword-method-mep>): Remove.
  (llvm-entry-point-function): Use llvm-builder-global-defined?.
  (llvm-entry-point-info): New generic function with definitions connecting
   <&shared-entry-point> instances with the corresponding
   <llvm-entry-point-descriptor> and count.
  (emit-name-internal on <&shared-entry-point>): New method generating names
   using llvm-entry-point-info.

* sources/dfmc/llvm-back-end/llvm-back-end-types.dylan
  (llvm-entry-point-type): Remove.

* sources/dfmc/llvm-back-end/llvm-back-end-library.dylan
  (module dfmc-llvm-back-end): Remove export of llvm-entry-point-type,
   and add export of llvm-entry-point-info.

* sources/dfmc/llvm-linker/llvm-link-object.dylan
  (emit-extern on <&shared-entry-point>): Generate entry-point external
   declarations from entry-point definitions.


  Commit: 027528546fb66b2b53936b68da7ad0eb2efcfe50
      https://github.com/dylan-lang/opendylan/commit/027528546fb66b2b53936b68da7ad0eb2efcfe50
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
    M sources/dfmc/llvm-back-end/llvm-ops.dylan

  Log Message:
  -----------
  Bug 7458: Add a class wrapper retrieval emitter method

* sources/dfmc/llvm-back-end/llvm-ops.dylan
  (op--object-mm-wrapper): New method for emitting code to retrieve the
   <mm-wrapper> for an object, applicable to both heap objects (where it
   is stored in the zeroth slot) and to tagged direct objects
   (where the wrappers can be retrieved by indexing into
    $direct-object-mm-wrappers).

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  ($runtime-referenced-variables): New constant representing
   variables (such as $direct-object-mm-wrappers) in the Dylan library
   referenced by the generated run-time.
  (generate-runtime-heap): Add code to emit extern declarations for variables
   referenced from the generated run-time.


  Commit: 0e1754b7d5eb10b7f1992e8264df9c9ca48760ad
      https://github.com/dylan-lang/opendylan/commit/0e1754b7d5eb10b7f1992e8264df9c9ca48760ad
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-emit-type-check.dylan

  Log Message:
  -----------
  Bug 7458: Extract a method for subtype bit based instance checks

* sources/dfmc/llvm-back-end/llvm-emit-type-check.dylan
  (do-emit-instance-cmp on <&class>): Split out instance checks for heap
   objects based on mm-wrapper-subtype-mask.
  (op--heap-object-subtype-bit-instance-cmp): New method.


  Commit: 75f84de62611e1a35429545b1ea096277993cf16
      https://github.com/dylan-lang/opendylan/commit/75f84de62611e1a35429545b1ea096277993cf16
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
    M sources/dfmc/llvm-back-end/llvm-emit-type-check.dylan
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan
    M sources/dfmc/llvm-back-end/llvm-ops.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-basic.dylan

  Log Message:
  -----------
  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.


  Commit: d97528644c81debae5660decad44ede85d526f9f
      https://github.com/dylan-lang/opendylan/commit/d97528644c81debae5660decad44ede85d526f9f
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan

  Log Message:
  -----------
  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.


  Commit: a7b97bd560c104ed99285c81b6c90c8986ad0ca6
      https://github.com/dylan-lang/opendylan/commit/a7b97bd560c104ed99285c81b6c90c8986ad0ca6
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan

  Log Message:
  -----------
  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".


  Commit: 20fe1c36b46ec01c33f87eaf42fb11a06a239e06
      https://github.com/dylan-lang/opendylan/commit/20fe1c36b46ec01c33f87eaf42fb11a06a239e06
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan

  Log Message:
  -----------
  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.


  Commit: 697b5f08a665267cf97f398dfd32fb0a692127af
      https://github.com/dylan-lang/opendylan/commit/697b5f08a665267cf97f398dfd32fb0a692127af
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan

  Log Message:
  -----------
  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.


  Commit: 890da3524ce0a7bb4231cbd176dfe54cecacc6fe
      https://github.com/dylan-lang/opendylan/commit/890da3524ce0a7bb4231cbd176dfe54cecacc6fe
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
    M sources/dfmc/modeling/functions.dylan
    M sources/dfmc/modeling/modeling-library.dylan
    M sources/dfmc/modeling/namespaces.dylan

  Log Message:
  -----------
  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.


  Commit: f8190a6f69025af05ca53c70c09c7f1f3331a30a
      https://github.com/dylan-lang/opendylan/commit/f8190a6f69025af05ca53c70c09c7f1f3331a30a
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
    M sources/dfmc/llvm-back-end/llvm-entry-points.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
    M sources/dfmc/modeling/functions.dylan
    M sources/dfmc/modeling/modeling-library.dylan
    M sources/dfmc/modeling/namespaces.dylan

  Log Message:
  -----------
  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.


  Commit: c552a0ecf9696cff45f179448831f2792702bd24
      https://github.com/dylan-lang/opendylan/commit/c552a0ecf9696cff45f179448831f2792702bd24
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-primitives-debug.dylan

  Log Message:
  -----------
  Bug 7458: Add a placeholder for class-allocation-break

* sources/dfmc/llvm-back-end/llvm-primitives-debug.dylan
  (class-allocation-break): Add placeholder primitive definition.


  Commit: e3c2da7eb810a5359b1e1c29a8d2273e800240ac
      https://github.com/dylan-lang/opendylan/commit/e3c2da7eb810a5359b1e1c29a8d2273e800240ac
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-primitives-os.dylan

  Log Message:
  -----------
  Bug 7458: Add keyboard-break runtime variable definitions

* sources/dfmc/llvm-back-end/llvm-primitives-os.dylan
  (dylan-keyboard-interrupt?): New runtime-variable.
  (dylan-keyboard-break-handler): New runtime-variable.


  Commit: 11659312f17c750a47771df79ad10134403d93b6
      https://github.com/dylan-lang/opendylan/commit/11659312f17c750a47771df79ad10134403d93b6
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
    M sources/dfmc/llvm-back-end/llvm-back-end-library.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan

  Log Message:
  -----------
  Bug 7458: Streamline entry point generation

In the process, increase the maximum count from 9 to 20.

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  ($entry-point-argument-count): New constant governing the number of
   entry point variants generated.
  (op--initialize-single-method-engine-node,
   op--initialize-cache-header-engine-node): Use $entry-point-argument-count.
  (primitive primitive-initialize-discriminator): Use
   $entry-point-argument-count.

* sources/dfmc/llvm-back-end/llvm-back-end-library.dylan
  (module dfmc-llvm-back-end): Export $entry-point-argument-count.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  (generate-runtime-entry-points): Use $entry-point-argument-count.


  Commit: c6d9945eca0b1aad88f521f46a448f6efe6aa0ac
      https://github.com/dylan-lang/opendylan/commit/c6d9945eca0b1aad88f521f46a448f6efe6aa0ac
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan

  Log Message:
  -----------
  Bug 7458: Implement primitive-set-generic-function-entrypoints

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  (primitive-set-generic-function-entrypoints): Fill in implementation.


  Commit: ed77c3744032736d25b18ae4abd916c7973440b4
      https://github.com/dylan-lang/opendylan/commit/ed77c3744032736d25b18ae4abd916c7973440b4
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan

  Log Message:
  -----------
  Bug 7458: Implement primitive-engine-node-apply-with-optionals

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  (primitive-engine-node-apply-with-optionals): Fill in implementation.


  Commit: 510be06dc887d5559e5fdcdcb8f769101e493bcd
      https://github.com/dylan-lang/opendylan/commit/510be06dc887d5559e5fdcdcb8f769101e493bcd
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan

  Log Message:
  -----------
  Bug 7458: Implement primitive-mep-apply-with-optionals

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  (primitive primitive-mep-apply-with-optionals): Fill in implementation.


  Commit: fd51d0551cedb00e89c26ad79c180d075cc9ba66
      https://github.com/dylan-lang/opendylan/commit/fd51d0551cedb00e89c26ad79c180d075cc9ba66
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    M sources/dfmc/llvm-back-end/llvm-primitives.dylan
    M sources/dfmc/llvm-back-end/llvm-sections.dylan
    M sources/dfmc/llvm-linker/llvm-link-object.dylan

  Log Message:
  -----------
  Bug 7458: Allow changing section names for thread-local data

* sources/dfmc/llvm-back-end/llvm-sections.dylan
  (llvm-section-name): Add a thread-local? keyword. Use null section names
   for thread-local #"variables" and #"untraced-data".

* sources/dfmc/llvm-linker/llvm-link-object.dylan
  (emit-definition on <module-binding>): Pass thread-local? keyword to
   llvm-section-name.

* sources/dfmc/llvm-back-end/llvm-primitives.dylan
  (llvm-runtime-variable): Pass thread-local? keyword to
   llvm-section-name.


  Commit: a199e5a5e4f0452e7fef7bace74abed91a915691
      https://github.com/dylan-lang/opendylan/commit/a199e5a5e4f0452e7fef7bace74abed91a915691
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-18 (Sun, 18 Jan 2015)

  Changed paths:
    A sources/app/llvm-runtime-generator/llvm-runtime-c-header.dylan
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.lid
    M sources/dfmc/llvm-back-end/llvm-back-end-library.dylan
    M sources/dfmc/llvm-back-end/llvm-primitives.dylan

  Log Message:
  -----------
  Bug 7458: Generate declarations for C-callable primitives

* sources/dfmc/llvm-back-end/llvm-primitives.dylan
  (llvm-primitive-signature): New function for constructing a <&signature>
   from an LLVM primitive definition.
  (make-primitive-signature): New auxiliary function for
   llvm-primitive-signature.

* sources/dfmc/llvm-back-end/llvm-back-end-library.dylan
  (module dfmc-llvm-back-end): Export llvm-primitive-signature.

* sources/app/llvm-runtime-generator/llvm-runtime-c-header.dylan:
  New file.
  (print-raw-struct-c-declaration, print-primitive-c-function-declaration,
   print-primitive-c-type): New methods for printing run-time definitions
   as C declarations.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  (generate-runtime-header): Move struct generation logic to
   print-raw-struct-c-declaration. Generate declarations for
   C-callable primitives.


Compare: https://github.com/dylan-lang/opendylan/compare/4d4e8757a517...a199e5a5e4f0

_______________________________________________
chatter mailing list
[email protected]
https://lists.opendylan.org/mailman/listinfo/chatter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.