1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-15 11:21:19 -07:00
emacs/src
Andrea Corallo c37b5446d1 Add native compiler dynamic scope support
Add an initial implementation to support dynamic scope.  Arg
parsing/binding it's done using the existing code in use for
bytecode (no ad-hoc code is synthetized for that).

	* src/lisp.h (struct Lisp_Subr): Add lambda_list field.
	(SUBR_NATIVE_COMPILED_DYNP): New inliner.

	* src/alloc.c (mark_object): Update for Add lambda_list field.

	* src/eval.c (eval_sub, Ffuncall, funcall_lambda): Handle native
	compiled dynamic scope

	* src/comp.c (declare_lex_function): Rename from declare_function
	and rework.
	(declare_function): New function.
	(make_subr): Handle daynamic scope

	* src/pdumper.c (dump_subr): Update for lambda_list field.

	* lisp/emacs-lisp/comp.el (comp-func): Remove args slot.
	(comp-func-l, comp-func-d): New classes deriving from `comp-func'.
	(comp-spill-lap-function): Rework.
	(comp-prepare-args-for-top-level): New function.
	(comp-emit-for-top-level, comp-emit-lambda-for-top-level): Make
	use of `comp-prepare-args-for-top-level'.
	(comp-limplify-top-level): Use `comp-func-l'.
	(comp-limplify-function): Emit arg prologue only for dynamic
	scoped functions.
	(comp-call-optim-form-call): Use `comp-func-l'.
	(comp-call-optim, comp-tco): Do not optimize dynamic scoped code.
2020-06-19 09:04:49 +02:00
..
bitmaps
.dbxinit
.gdbinit
alloc.c Add native compiler dynamic scope support 2020-06-19 09:04:49 +02:00
atimer.c
atimer.h
bidi.c
bignum.c
bignum.h
blockinput.h
buffer.c
buffer.h
bytecode.c
callint.c
callproc.c
casefiddle.c
casetab.c
category.c
category.h
ccl.c
ccl.h
ChangeLog.1
ChangeLog.2
ChangeLog.3
ChangeLog.4
ChangeLog.5
ChangeLog.6
ChangeLog.7
ChangeLog.8
ChangeLog.9
ChangeLog.10
ChangeLog.11
ChangeLog.12
ChangeLog.13
character.c
character.h
charset.c
charset.h
chartab.c
cm.c
cm.h
cmds.c
coding.c
coding.h
commands.h
comp.c Add native compiler dynamic scope support 2020-06-19 09:04:49 +02:00
comp.h Fix recursive load for non cons hashed 'data_ephemeral_vec' content 2020-06-11 18:37:37 +02:00
composite.c
composite.h
conf_post.h
COPYING
cygw32.c
cygw32.h
data.c
dbusbind.c
decompress.c
deps.mk
dired.c
dispextern.h
dispnew.c
disptab.h
dmpstruct.awk
doc.c
doprnt.c
dosfns.c
dosfns.h
dynlib.c
dynlib.h
editfns.c
emacs-icon.h
emacs-module.c
emacs-module.h.in
emacs.c
emacsgtkfixed.c
emacsgtkfixed.h
epaths.in
eval.c Add native compiler dynamic scope support 2020-06-19 09:04:49 +02:00
fileio.c
filelock.c
firstfile.c
floatfns.c
fns.c
font.c
font.h
fontset.c
fontset.h
frame.c
frame.h
fringe.c
ftcrfont.c
ftfont.c
ftfont.h
getpagesize.h
gfilenotify.c
gmalloc.c
gnutls.c
gnutls.h
gtkutil.c
gtkutil.h
hbfont.c Fix Arabic shaping when eww/shr fill the text to be rendered 2020-06-05 10:56:01 +03:00
image.c
indent.c
indent.h
inotify.c
insdel.c
intervals.c
intervals.h
json.c
keyboard.c
keyboard.h
keymap.c
keymap.h
kqueue.c
lastfile.c
lcms.c
lisp.h Add native compiler dynamic scope support 2020-06-19 09:04:49 +02:00
lread.c Copy suffixes passed to 'openp' to avoid GC crashes. Fixes bug#41755 2020-06-10 13:46:46 +02:00
macfont.h
macfont.m
macros.c
macros.h
macuvs.h
Makefile.in
marker.c
menu.c
menu.h
mini-gmp-emacs.c
mini-gmp.c
mini-gmp.h
minibuf.c
module-env-25.h
module-env-26.h
module-env-27.h
module-env-28.h
msdos.c
msdos.h
nsfns.m Use 65535 as color-values scale value in the NS backend 2020-06-07 10:37:27 +02:00
nsfont.m
nsgui.h
nsimage.m
nsmenu.m
nsselect.m
nsterm.h
nsterm.m More robust NS hex colour string parsing 2020-06-08 13:24:29 +02:00
pdumper.c Add native compiler dynamic scope support 2020-06-19 09:04:49 +02:00
pdumper.h
print.c
process.c
process.h
profiler.c
ptr-bounds.h
puresize.h
ralloc.c
README
regex-emacs.c
regex-emacs.h
region-cache.c
region-cache.h
scroll.c
search.c
sheap.c
sheap.h
sound.c
syntax.c
syntax.h
sysdep.c
sysselect.h
syssignal.h
sysstdio.h
systhread.c
systhread.h
systime.h
systty.h
syswait.h
term.c
termcap.c
termchar.h
termhooks.h
terminal.c
terminfo.c
termopts.h
textprop.c
thread.c
thread.h
timefns.c
tparam.c
tparam.h
undo.c
unexaix.c
unexcoff.c
unexcw.c
unexec.h
unexelf.c
unexhp9k800.c
unexmacosx.c
unexsol.c
unexw32.c
vm-limit.c
w16select.c
w32.c
w32.h
w32common.h
w32console.c
w32cygwinx.c
w32fns.c
w32font.c
w32font.h
w32gui.h
w32heap.c
w32heap.h
w32image.c
w32inevt.c
w32inevt.h
w32menu.c
w32notify.c
w32proc.c
w32reg.c
w32select.c
w32select.h
w32term.c
w32term.h
w32uniscribe.c
w32xfns.c
widget.c
widget.h
widgetprv.h
window.c
window.h
xdisp.c Merge from origin/emacs-27 2020-06-07 09:03:59 -07:00
xfaces.c
xfns.c
xfont.c
xftfont.c
xgselect.c
xgselect.h
xmenu.c
xml.c
xrdb.c
xselect.c
xsettings.c
xsettings.h
xsmfns.c
xterm.c
xterm.h
xwidget.c
xwidget.h

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Copyright (C) 2001-2020 Free Software Foundation, Inc.
See the end of the file for license conditions.


This directory contains the source files for the C component of GNU Emacs.
Nothing in this directory is needed for using Emacs once it is built
and installed, if the dumped Emacs is copied elsewhere.

See the files ../README and then ../INSTALL for installation instructions.

The file 'Makefile.in' is used as a template by the script
'../configure' to produce 'Makefile'.  This is the file which actually
controls the compilation of Emacs C source files.  All of this should
work transparently; you should only need to change to the parent
directory, run './configure', and then run 'make'.

This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.