Previous: compiler dircalls cond, Up: compiler dircalls [Index]
debug-call
integrationAs example of integration, the standard language form:
((lambda (x) x) 1)
is expanded into the core language form:
(annotated-call ?annotation-struct (annotated-case-lambda #'(lambda (x) x) ((x x))) (quote 1))
which is recordised as:
(funcall (primref debug-call) (constant (?annotation-source . ((lambda (x) x) '1))) (lambda (x_0) x_0) (constant 1))
and integrated as:
(bind ((x_0 (constant 1))) x_0)
where we can see there is no more a function application.
Another example, the standard language form:
((let ((f (lambda (y) y))) f) '1)
is expanded and recordised into:
(funcall (primref debug-call) (constant (?annotation-source . ((let ((f (lambda (x) x))) f) 1))) (bind ((f_0 (lambda (x_0) x_0))) f_0) (constant 1))
and integrated as:
(bind ((f_0 (lambda (y_0) y_0))) (funcall (primref debug-call) (constant (?annotation-source . ((let ((f (lambda (y) y))) f) 1))) f_0 (constant 1)))
where we can see the debug-call
moved into the body.