racket/c
Matthew Flatt 26ff90e8e6 more compact return points for function calls
In the general form of a function call, the return point embeds 4
words of information: offset to the start of the enclosing function,
frame size, live-veriable mask, and multiple-value return address. In
the common case, however, the multiple-value return address is either
the same as the return address or it is a `values-error` library
function, and the frame size and live-variable mask fit into a word
with bits to spare. This patch implements a more compact return point
for that common case, which shrinks the 4 words to 2 and also avoids a
relocation (= 1 more word).

Multiple-value returns are more complex with this change (i.e.,
require more code), since they must check whether the return point is
compact or not. But multiple-value returns are far less common than
function calls, so saving function-call space is a clear win.

Overall, this change tends to reduce code size by about 10% on x86_64.

original commit: 1f53b5eabef966db01086cb32e544bbf8deacfca
2020-01-24 19:19:32 -07:00
..
alloc.c add stencil vectors and fxpopcount 2020-01-06 05:34:28 -07:00
arm32le.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
build.bat adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
compress-io.c Try to eliminate dead stores (#444) 2019-07-25 15:05:48 -04:00
compress-io.h compress-level parameter, improvement in lz4 compression, and various other related improvements 2019-04-18 05:47:19 -07:00
cs.ico initial upload of open-source release 2016-04-26 10:04:54 -04:00
expeditor.c skip <xlocale.h> on Linux 2019-12-11 14:41:07 -07:00
externs.h use POPCNT instruction when available on x86_64 2020-01-11 11:04:48 -07:00
fasl.c fix popcount support to work on Windows 2020-01-11 16:41:46 -07:00
flushcache.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
foreign.c Make variables unsigned to avoid ub in calculation 2019-06-05 22:49:55 +02:00
gc-ocd.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
gc-oce.c add object-references to reflect GC's tracing of objects 2018-07-16 18:08:48 -06:00
gc.c more compact return points for function calls 2020-01-24 19:19:32 -07:00
gcwrapper.c add stencil vectors and fxpopcount 2020-01-06 05:34:28 -07:00
globals.h speed up objlist 2020-01-01 15:08:52 -07:00
i3le.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
intern.c speed up objlist 2020-01-01 15:08:52 -07:00
io.c Improved Unicode support for command-line arguments, environment variables, the C interface and error messages, and the Windows registry, DLL loading, and process creation 2018-06-14 14:24:15 -04:00
itest.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
main.c adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
Makefile.a6nt add pseudo-random generator API 2019-10-07 10:58:39 -06:00
Makefile.i3nt add pseudo-random generator API 2019-10-07 10:58:39 -06:00
Makefile.ta6nt add pseudo-random generator API 2019-10-07 10:58:39 -06:00
Makefile.ti3nt add pseudo-random generator API 2019-10-07 10:58:39 -06:00
Mf-a6fb propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-a6le propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-a6nb propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-a6nt adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
Mf-a6ob propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-a6osx propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-a6s2 propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-arm32le adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
Mf-base add stencil vectors and fxpopcount 2020-01-06 05:34:28 -07:00
Mf-i3fb propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-i3le propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-i3nb propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-i3nt adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
Mf-i3ob propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-i3osx propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-i3qnx propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-i3s2 propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ppc32le propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ta6fb propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ta6le propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ta6nb propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ta6nt adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
Mf-ta6ob propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ta6osx propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ta6s2 propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ti3fb propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ti3le propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ti3nb propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ti3nt adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
Mf-ti3ob propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ti3osx propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-ti3s2 propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
Mf-tppc32le propagate CC and CPPFLAGS to ZLib and LZ4 builds 2019-12-09 08:34:50 -07:00
new-io.c Try to eliminate dead stores (#444) 2019-07-25 15:05:48 -04:00
nocurses.h adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
number.c clear temporary bignum registers 2019-12-30 07:03:19 -07:00
popcount.h add stencil vectors and fxpopcount 2020-01-06 05:34:28 -07:00
ppc32.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
ppc32le.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
prim.c use POPCNT instruction when available on x86_64 2020-01-11 11:04:48 -07:00
prim5.c make strings within symbols always immutable 2019-12-16 17:11:49 -07:00
print.c adjust GC to preserve eq? on flonums 2019-01-22 05:24:05 -07:00
random.c add pseudo-random generator API 2019-10-07 10:58:39 -06:00
scheme.c fasl: move uptr continue bit from low to high 2019-12-06 16:43:26 -07:00
scheme.exe.manifest - Cygwin is now used on Windows, updated mats, eliminated unused killme 2016-06-10 10:07:07 -04:00
scheme.rc Now opening 9.5.3 release. Intent is to formally release 9.5.2 2019-03-21 15:07:39 -07:00
schlib.c Avoid an occasional invalid memory violation on Windows in S_call_help 2018-06-15 16:42:09 -04:00
schsig.c repair for opportunistic 1-shot 2019-09-24 11:41:50 -06:00
segment.c scalable object locking 2019-09-01 07:03:16 -06:00
segment.h adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
sort.h changed copyright year to 2017 2017-04-06 11:41:33 -04:00
statics.c adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
stats.c ignore result of mktime 2019-11-23 19:54:30 -05:00
symbol.c changed copyright year to 2017 2017-04-06 11:41:33 -04:00
system.h adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
thread.c continuation-attachment performance 2019-09-11 09:34:42 -06:00
thread.h changed copyright year to 2017 2017-04-06 11:41:33 -04:00
types.h more compact return points for function calls 2020-01-24 19:19:32 -07:00
version.h adjust build for BSDs, MinGW cross-compile, and more configuration 2019-07-06 13:16:57 -06:00
vfasl.c add stencil vectors and fxpopcount 2020-01-06 05:34:28 -07:00
vs.bat Added support for building chez with VS2019. (#435) 2019-06-04 16:37:57 -04:00
windows.c update Windows spin-loop count for deleting files and directories 2019-03-26 14:16:54 -04:00