Distinguish between different kinds of inlining failures.

This commit is contained in:
Vincent St-Amour 2012-11-30 17:45:43 -05:00
parent 8e9f21b181
commit 6480addbd1
2 changed files with 9 additions and 11 deletions

View File

@ -103,9 +103,9 @@
(define forged-stx (inlining-event->forged-stx evt))
(define kind
(match (inlining-event-kind evt)
[(== success-key) success-key]
[(== failure-key) failure-key]
[(== out-of-fuel-key) out-of-fuel-key]
[(== success-key) success-key]
[(or (== failure-key) (== 'non-copyable)) failure-key]
[(or (== out-of-fuel-key) (== 'too-large)) out-of-fuel-key]
[_ (error "Unknown log message type" l)]))
(inliner-log-entry kind kind
forged-stx forged-stx

View File

@ -3565,23 +3565,21 @@ int scheme_compiled_propagate_ok(Scheme_Object *value, Optimize_Info *info)
scheme_log(info->logger,
SCHEME_LOG_DEBUG,
0,
/* actual cause: contains non-copyable body elements that prevent inlining */
/* TODO have OC recognize this as a separate event instead of reusing failure */
"no-inlining %s size: %d threshold: %d#<separator>%s",
/* contains non-copyable body elements that prevent inlining */
"non-copyable %s size: %d threshold: %d#<separator>%s",
scheme_write_to_string(data->name ? data->name : scheme_false, NULL),
sz,
0, /* TODO no sensible threshold here */
0, /* no sensible threshold here */
scheme_optimize_context_to_string(info->context));
else
scheme_log(info->logger,
SCHEME_LOG_DEBUG,
0,
/* actual cause: too big for an inlining candidate */
/* TODO have OC recognize this as a separate event instead of reusing OOF */
"out-of-fuel %s size: %d threshold: %d#<separator>%s",
/* too large to be an inlining candidate */
"too-large %s size: %d threshold: %d#<separator>%s",
scheme_write_to_string(data->name ? data->name : scheme_false, NULL),
sz,
0, /* TODO no sensible threshold here */
0, /* no sensible threshold here */
scheme_optimize_context_to_string(info->context));
return 0;
}