diff options
author | Andy Wingo <wingo@pobox.com> | 2018-08-08 14:48:32 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-08-08 14:48:32 +0200 |
commit | b7dbc7251f4cf58dbaeb8cff9229f325680690fd (patch) | |
tree | 77e6c8f089576a2bef74fbb5e11daf828d227a94 /libguile/vm-engine.c | |
parent | 0d00164f8a56b865a0810cf5ed27a20683ae274e (diff) | |
download | guile-b7dbc7251f4cf58dbaeb8cff9229f325680690fd.tar.gz |
Minor optimization in RESET_FRAME
* libguile/vm-engine.c (RESET_FRAME): Remove update of sp_min_since_gc.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r-- | libguile/vm-engine.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index 41b62bb7d..65342b6b3 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -192,12 +192,18 @@ } while (0) /* Reset the current frame to hold N locals. Used when we know that no - stack expansion is needed. */ + stack expansion is needed. Note that in some cases this may lower + SP, e.g. after a return but where there are more locals below, but we + know it was preceded by an alloc-frame in that case, so no stack need + be allocated. + + As an optimization, we don't update sp_min_since_gc in this case; the + principal place stacks are expanded is in ALLOC_FRAME. it doesn't + need to strictly be the min since GC, as it's just an optimization to + prevent passing too-large of a range to madvise. */ #define RESET_FRAME(n) \ do { \ VP->sp = sp = VP->fp - (n); \ - if (sp < VP->sp_min_since_gc) \ - VP->sp_min_since_gc = sp; \ } while (0) /* Compute the number of locals in the frame. At a call, this is equal |