Previous: compiler recordize examples, Up: compiler recordize [Index]
Whenever debugging mode is enabled, application forms like:
(?func ?arg ...)
are expanded and recordised into:
(funcall (primref debug-call) ?annotation ?rator ?rand ...)
where: ?rator is the recordised version of ?func; ?rand is the recordised version of ?arg; ?annotation is a debugging annotation:
(constant (?annotation-source . (?func ?arg ...)))
in which ?annotation-source has one of the formats:
#f (?port-identifier . ?first-character-offset)
the introducion of debug-call
is performed no matter what
expression ?func is.
lambda
applicationThe 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))
let
applicationThe 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))