[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