Experiment with always inlining certain prims

This commit is contained in:
Justin Ethier 2016-12-13 19:03:24 -05:00
parent c3b31e0181
commit 45d040c955

View file

@ -602,10 +602,12 @@
(one-instance-of-new-mutable-obj?
(cdr exp)
(ast:lambda-formals->list (car exp)))
(inline-prim-call?
(ast:lambda-body (car exp))
(prim-calls->arg-variables (cdr exp))
(ast:lambda-formals->list (car exp)))))
(or
(prim-calls-inlinable? (cdr exp))
(inline-prim-call?
(ast:lambda-body (car exp))
(prim-calls->arg-variables (cdr exp))
(ast:lambda-formals->list (car exp))))))
)
(let ((args (cdr exp)))
(for-each
@ -656,6 +658,12 @@
Cyc-compilation-environment
)))
(define (prim-calls-inlinable? prim-calls)
(every
(lambda (prim-call)
(prim:immutable-args/result? (car prim-call)))
prim-calls))
;; Check each pair of primitive call / corresponding lambda arg,
;; and verify that if the primitive call creates a new mutable
;; object, that only one instance of the object will be created.