[dylan-lang/opendylan] b3fc64: Bug 7458: Refine MEP calling convention

GitHub <[email protected]>
Newsgroups gmane.comp.lang.dylan.gwydion.cvs
Message-ID <54bf5608887e3_271b3f97bf6eb2c0119019@hookshot-fe1-cp1-prd.iad.github.net.mail>
  Branch: refs/heads/master
  Home:   https://github.com/dylan-lang/opendylan
  Commit: b3fc64f4e056d82ee8b729b345d27badd67175ba
      https://github.com/dylan-lang/opendylan/commit/b3fc64f4e056d82ee8b729b345d27badd67175ba
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-20 (Tue, 20 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 MEP calling convention

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (entry-point rest-key-xep): Fill in implementation.
  (op--function-signature-properties): New emitter function for extracting
   a <signature> and its properties from a <function> instance.
  (op--process-keyword-optionals): New emitter function for defaulting and
   processing keyword arguments into a local argument buffer.
  (entry-point rest-key-mep): Change calling convention. Fill in
   implementation.
  (entry-point implicit-keyed-single-method,
   entry-point explicit-keyed-single-method,
   entry-point unrestricted-keyed-single-method): Change calling convention
   of called MEPs.

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-call method on <method-call>): Change calling convention of
   called MEPs. Check if the called method has an IEP only, and if so
   call it using IEP calling conventions.


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

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

  Log Message:
  -----------
  Bug 7458: Implement the apply-mep entry point

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (entry-point apply-mep): Implement apply-mep for cases where
   argument shuffling (adding or removing values from the optionals
   vector) does or does not need to be performed.


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

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

  Log Message:
  -----------
  Bug 7458: Fix primitive-apply

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  (primitive primitive-apply): Handle the arguments vector properly;
   its final element contains a vector of arguments to be appended
   after the other elements.


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

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

  Log Message:
  -----------
  Bug 7458: Improve <method-apply> of known <keyword-method>s

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-call on <method-apply>): New method to directly call the
   MEP of a known <keyword-method> rather than invoking the apply-mep
   entry point.


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

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan

  Log Message:
  -----------
  Bug 7458: Fix emitting runtime primitives that do not return

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  (generate-runtime-primitive): Don't generate a return instruction if
   the end of the runtime primitive is unreachable.


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

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

  Log Message:
  -----------
  Bug 7458: Limit MV return values to the returned count

 * sources/dfmc/llvm-back-end/llvm-mv.dylan
   (op--mv-extract): Return #f for return value indices beyond the
    returned value count.


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

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

  Log Message:
  -----------
  Bug 7458: Fix value cell code generation

* sources/dfmc/llvm-back-end/llvm-primitives-value-cell.dylan
  (op--make-closed-over-cell): Instantiate the correct value cell class
   for single-float and double-float cells.
  (op--get-closed-over-cell, op--set-closed-over-cell): Generate correct
   access code for single-float and double-float cells.


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

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

  Log Message:
  -----------
  Bug 7458: Do not pass stack-allocated vectors to tail calls

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (entry-point rest-xep,
   entry-point rest-key-xep): Change tail calls into ordinary calls.
  (op--engine-node-call, op--chain-to-engine-entry-point): Add a
   tail-call?: keyword argument for marking when it is safe to
   perform a tail call.
  (entry-point gf-xep): Mark final call as tail-call safe.
  (entry-point general-engine-node-n): Change tail calls into ordinary
   calls.
  (entry-point implicit-keyed-single-method,
   entry-point explicit-keyed-single-method): Change tail calls into ordinary
   calls.
  (entry-point cache-header, entry-point profiling-cache-header): Mark
   final call as tail-call safe.
  (entry-point discriminate-on-argument,
   entry-point if-type-discriminator,
   entry-point typecheck-discriminator,
   entry-point monomorphic-by-class-discriminator): Mark final call as
   tail-call safe.

* sources/dfmc/llvm-back-end/llvm-primitives-lambda.dylan
  (primitive primitive-engine-node-apply-with-optionals):  Mark
   final call as tail-call safe.


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

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-generator-library.dylan
    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-entry-points.dylan

  Log Message:
  -----------
  Bug 7458: Build debug info for generated entry points

* sources/dfmc/llvm-back-end/llvm-entry-points.dylan
  (llvm-emit-entry-point-dbg-function): New function emitting
   debug metadata and emitting debug intrinsic calls for a given
   generated entry-point instance.
  (make-entry-point-dbg-function): New auxiliary function for
   generating debug metadata for an entry point.

* sources/dfmc/llvm-back-end/llvm-back-end-library.dylan
  (module dfmc-llvm-back-end): Export llvm-back-end-dbg-functions
   and llvm-emit-entry-point-dbg-function for use by
   llvm-runtime-generator.

* sources/app/llvm-runtime-generator/llvm-runtime-generator-library.dylan
  (module llvm-runtime-generator): Reference llvm-debug.

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  ($debug-producer): New constant.
  (generate-runtime-entry-point): Receive debug file metadata. Call
   llvm-emit-entry-point-dbg-function to emit debug info for the generated
   entry-point.
  (generate-runtime-entry-points): Receive debug file metadata and pass
   it to generate-runtime-entry-point.
  (generate-runtime): Create dummy debug source file metadata and
   dummy debug compile unit metadata for use with generated functions,
   and pass the debug file metadata to generate-runtime-entry-points.


  Commit: ef93460d126be9e952c73a4732d6aceb343cc842
      https://github.com/dylan-lang/opendylan/commit/ef93460d126be9e952c73a4732d6aceb343cc842
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-20 (Tue, 20 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.dylan

  Log Message:
  -----------
  Bug 7458: Build debug info for generated runtime primitives

* sources/dfmc/llvm-back-end/llvm-primitives.dylan
  (llvm-emit-primitive-dbg-function): New function emitting
   debug metadata and emitting debug intrinsic calls for a given
   generated runtime primitive.
  (make-primitive-dbg-function): New auxiliary function for
   generating debug metadata for a primitive.

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

* sources/app/llvm-runtime-generator/llvm-runtime-generator.dylan
  (generate-runtime-primitive): Receive debug file metadata. Call
   llvm-emit-primitive-dbg-function to emit debug info for the generated
   primitive.
  (generate-runtime-primitives): Receive debug file metadata and pass
   it to generate-runtime-primitive.
  (generate-runtime): Pass debug file metadata to
   generate-runtime-primitives.


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

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

  Log Message:
  -----------
  Bug 7458: Implement primitive-debug-message

* sources/dfmc/llvm-back-end/llvm-primitives-debug.dylan
  (op--inside-debugger?): New auxiliary function.
  (primitive primitive-inside-debugger?): Implement using
   op--inside-debugger?.
  (primitive primitive-debug-message): Implement to invoke a
   breakpoint when running under control of the debugger.


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

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

  Log Message:
  -----------
  Bug 7458: Compute debug info from dynamic signatures

* sources/dfmc/llvm-back-end/llvm-emit-debug.dylan
  (emit-lambda-dbg-function): Compute the function type and debug
   info function type from the signature spec when the signature
   is unavailable.
  (llvm-dynamic-signature-dbg-types): Compute debug info function
   types from a signature spec.


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

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

  Log Message:
  -----------
  Bug 7458: Improve local variable debug info generation

* sources/dfmc/llvm-back-end/llvm-emit-debug.dylan
  (emit-dbg-local-variable): New auxiliary method for emitting
   debug info intrinsic calls for a named <temporary>.
  (llvm-reference-dbg-type on <type-estimate>,
   llvm-reference-dbg-type on <type-estimate-raw>,
   llvm-reference-dbg-type on <type-estimate-limited-instance>,
   llvm-reference-dbg-type on <type-estimate-union>,
   llvm-reference-dbg-type on <type-estimate-values>): New methods for
   determining the proper debug info type for a given local variable
   based on typist results.

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-result-assignment): Call emit-dbg-local-variable to
   emit debug info for named <temporary> results.
  (emit-computation on <loop>): Ensure that the call to computation-result
   follows all of the inserted phi nodes in case it need needs to insert
   instructions (such as calls to debug intrinsics).


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

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

  Log Message:
  -----------
  Bug 7458: Add variable scope info to emitted debug info

* sources/dfmc/llvm-back-end/llvm-emit-debug.dylan
  (emit-lambda-dbg-function): Call assign-computations-dbg-scope.
  (*computation-dbg-scope-table*): New thread variable storing a map
   between computations and their variable scope debug info.
  (assign-computations-dbg-scope): New method to assign variable scopes
   to a range of computations.
  (assign-computation-dbg-scope on <computation>,
   assign-computation-dbg-scope on <if>,
   assign-computation-dbg-scope on <loop>,
   assign-computation-dbg-scope on <block>,
   assign-computation-dbg-scope on <unwind-protect>): New methods for
   assigning variable scopes to computations and their descendents.
  (op--scl): Place instructions within the appropriate variable scope.


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

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

  Log Message:
  -----------
  Bug 7458: Handle extracting single values from a #rest vector

* sources/dfmc/llvm-back-end/llvm-mv.dylan
  (op--mv-extract): Read values from the #rest vector if the index
   is beyond the number of fixed values.


  Commit: 9ccce2accd93c92629ccdb5a00e7da51dfc97a15
      https://github.com/dylan-lang/opendylan/commit/9ccce2accd93c92629ccdb5a00e7da51dfc97a15
  Author: Peter S. Housel <[email protected]>
  Date:   2015-01-20 (Tue, 20 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/modeling/objects.dylan

  Log Message:
  -----------
  Bug 7458: Handle calling slot accessors from next-method

* sources/dfmc/modeling/objects.dylan
  ($dylan-system-subtype-bit-type-names): Assign a subtype bit for the
   <engine-node> class.

* sources/dfmc/llvm-back-end/llvm-emit-type-check.dylan
  (op--heap-object-subtype-mask): New auxiliary function for computing
   subtype test bits.
  (op--heap-object-subtype-bit-instance-cmp): Add a method for checking
   against multiple classes simultaneously.

* sources/dfmc/llvm-back-end/llvm-emit-computation.dylan
  (emit-call on <method-call>): Call <engine-node> (found in
   next-method lists for slot accessors) using the same signature as
   <keyword-method>.


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

  Changed paths:
    M sources/app/llvm-runtime-generator/llvm-runtime-c-header.dylan

  Log Message:
  -----------
  Bug 7458: Generate proper C declarations for varargs primitives

* sources/app/llvm-runtime-generator/llvm-runtime-c-header.dylan
  (print-primitive-c-function-declaration): Add "..." to C function
   declarations for primitive functions when the rest? flag is set
   in the primitive's signature.


Compare: https://github.com/dylan-lang/opendylan/compare/3d338cebe4f0...0209144a8c33

_______________________________________________
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.