1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-28 14:00:31 +02:00

remove @apply memoizer

* libguile/memoize.c (memoize): Recognize a primcall to 'apply as
  SCM_M_APPLY.
  (@apply): Remove @apply memoizer.
  (unmemoize): Unmemoize using "apply", not "@apply".

* libguile/memoize.h:
* libguile/expand.c (scm_sym_atapply): Remove.

* module/ice-9/boot-9.scm (apply): Re-implement using apply primcall.
  Use case-lambda, so as to give an appropriate minimum arity.

* module/language/tree-il/compile-glil.scm (flatten-lambda-case):
  Compile a primcall of "apply" specially, not "@apply".

* module/language/tree-il/peval.scm (peval): Match primcalls to "apply",
  not "@apply".  Residualize "apply" primcalls.

* module/language/tree-il/primitives.scm (*interesting-primitive-names*):
  (*multiply-valued-primitives*): Remove @apply, and apply primitive
  expander.

* test-suite/tests/peval.test:
* test-suite/tests/tree-il.test: Update tests to expect residualized
  "apply".

* test-suite/tests/procprop.test ("procedure-arity"): Update test for
  better apply arity.

* test-suite/tests/strings.test ("string"): Update expected error.
This commit is contained in:
Andy Wingo 2013-06-27 11:25:34 +02:00
parent 1773bc7dd5
commit 39caffe79b
11 changed files with 46 additions and 79 deletions

View file

@ -874,7 +874,7 @@
(let (args) (_) ((primcall list (const 2) (const 3)))
(seq
(call (toplevel foo!) (lexical args _))
(primcall @apply
(primcall apply
(lambda ()
(lambda-case
(((x y z w) #f #f #f () (_ _ _ _))
@ -898,7 +898,7 @@
bv
(+ offset 4))))
(let ((args (list x y)))
(@apply
(apply
(lambda (bv offset x y)
(bytevector-ieee-single-native-set!
bv
@ -938,7 +938,7 @@
;; Here we ensure that non-constant expressions are not copied.
(lambda ()
(let ((args (list (foo!))))
(@apply
(apply
(lambda (z x)
(list z x))
;; This toplevel ref might raise an unbound variable exception.
@ -959,7 +959,7 @@
(lambda ()
(let ((args (list 'foo)))
(set-car! args 'bar)
(@apply
(apply
(lambda (z x)
(list z x))
z
@ -971,7 +971,7 @@
((primcall list (const foo)))
(seq
(primcall set-car! (lexical args _) (const bar))
(primcall @apply
(primcall apply
(lambda . _)
(toplevel z)
(lexical args _))))))))
@ -1106,7 +1106,7 @@
(lambda-case
((() #f vals #f () (_))
(seq (toplevel baz)
(primcall @apply (primitive values) (lexical vals _))))))))
(primcall apply (primitive values) (lexical vals _))))))))
(pass-if-peval
;; Prompt is removed if tag is unreferenced
@ -1145,7 +1145,7 @@
(const 1)
(lambda-case
((() #f args #f () (_))
(primcall @apply
(primcall apply
(lexical handler _)
(lexical args _)))))))