Commit graph

312 commits

Author SHA1 Message Date
Stefan Monnier
b38b1ec071 Various compiler bug-fixes. MPC seems to run correctly now.
* lisp/files.el (lexical-binding): Add a safe-local-variable property.

* lisp/emacs-lisp/byte-opt.el (byte-inline-lapcode): Check how many elements
are added to the stack.
(byte-compile-splice-in-already-compiled-code): Don't touch lexical nor
byte-compile-depth now that byte-inline-lapcode does it for us.
(byte-compile-inline-expand): Don't inline dynbind byte code into
lexbind code, since it has to be done differently.

* lisp/emacs-lisp/bytecomp.el (byte-compile-arglist-warn):
Correctly extract arglist from `closure's.
(byte-compile-cl-warn): Compiler-macros are run earlier now.
(byte-compile-top-level): Bind byte-compile-lexical-environment to nil,
except for lambdas.
(byte-compile-form): Don't run the compiler-macro expander here.
(byte-compile-let): Merge with byte-compile-let*.
Don't preserve-body-value if the body's value was discarded.

* lisp/emacs-lisp/cconv.el (cconv--set-diff, cconv--set-diff-map)
(cconv--map-diff, cconv--map-diff-elem, cconv--map-diff-set): New funs.
(cconv--env-var): New constant.
(cconv-closure-convert-rec): Use it and use them.  Fix a typo that
ended up forgetting to remove entries from lmenvs in `let'.
For `lambda' use the outer `fvrs' when building the closure and don't
forget to remove `vars' from the `emvrs' and `lmenvs' of the body.

* lisp/emacs-lisp/cl-macs.el (cl-byte-compile-block): Disable optimization
in lexbind, because it needs a different implementation.

* src/bytecode.c (exec_byte_code): Fix handling of &rest.

* src/eval.c (Vinternal_interpreter_environment): Remove.
(syms_of_eval): Do declare Vinternal_interpreter_environment as
a global lisp var, but unintern it to hide it.
(Fcommandp):
* src/data.c (Finteractive_form): Understand `closure's.
2011-02-17 16:19:13 -05:00
Stefan Monnier
ce5b520a37 * lisp/emacs-lisp/byte-lexbind.el: Delete.
* lisp/emacs-lisp/bytecomp.el (byte-compile-current-heap-environment)
(byte-compile-current-num-closures): Remove vars.
(byte-vec-ref, byte-vec-set): Remove byte codes.
(byte-compile-arglist-vars, byte-compile-make-lambda-lexenv): Move from
byte-lexbind.el.
(byte-compile-lambda): Never build a closure.
(byte-compile-closure-code-p, byte-compile-make-closure): Remove.
(byte-compile-closure): Simplify.
(byte-compile-top-level): Don't mess with heap environments.
(byte-compile-dynamic-variable-bind): Always maintain
byte-compile-bound-variables.
(byte-compile-variable-ref, byte-compile-variable-set): Always just use
the stack for lexical vars.
(byte-compile-push-binding-init): Simplify.
(byte-compile-not-lexical-var-p): New function, moved from cconv.el.
(byte-compile-bind, byte-compile-unbind): New functions, moved and
simplified from byte-lexbind.el.
(byte-compile-let, byte-compile-let*): Simplify.
(byte-compile-condition-case): Don't add :fun-body to the bound vars.
(byte-compile-defmacro): Simplify.
* lisp/emacs-lisp/byte-opt.el (byte-compile-side-effect-free-ops)
(byte-optimize-lapcode): Remove byte-vec-ref and byte-vec-set.
* lisp/emacs-lisp/cconv.el (cconv-not-lexical-var-p): Remove.
(cconv-freevars, cconv-analyse-function, cconv-analyse-form):
Use byte-compile-not-lexical-var-p instead.
* src/bytecode.c (Bvec_ref, Bvec_set): Remove.
(exec_byte_code): Don't handle them.
* lisp/help-fns.el (describe-function-1): Fix paren typo.
2011-02-12 00:53:30 -05:00
Stefan Monnier
295fb2ac59 Let cconv use :fun-body in special forms that need it.
* lisp/emacs-lisp/cconv.el (cconv-closure-convert): Drop `toplevel' arg.
(cconv-closure-convert-toplevel): Remove.
(cconv-lookup-let): New fun.
(cconv-closure-convert-rec): Don't bother with defs-are-legal.
Use :fun-body to handle special forms that require closing their forms.
* lisp/emacs-lisp/bytecomp.el (byte-compile-file-form, byte-compile):
Use cconv-closure-convert instead of cconv-closure-convert-toplevel.
(byte-compile-lambda, byte-compile-make-closure):
* lisp/emacs-lisp/byte-lexbind.el (byte-compile-maybe-push-heap-environment):
Make sure cconv did its job.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode): Check stack-depth
before using it.
* lisp/dired.el (dired-desktop-buffer-misc-data): Don't use a dynamic var as
function argument.
2011-02-11 17:30:02 -05:00
Stefan Monnier
8f1d2ef658 Merge from trunk 2011-02-01 12:09:25 -05:00
Glenn Morris
73b0cd5003 Convert consecutive FSF copyright years to ranges. 2011-01-24 20:08:28 -08:00
Stefan Monnier
77ab81d054 Merge from emacs-23 2011-01-14 12:18:41 -05:00
Glenn Morris
5df4f04cd3 Add 2011 to FSF/AIST copyright years. 2011-01-02 15:50:46 -08:00
Stefan Monnier
2c302df3a1 Merge from trunk 2010-12-10 19:13:08 -05:00
Glenn Morris
17fc58c923 Silence byte-opt.el compilation.
* lisp/emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Give local
variables bytes, ptr, op a prefix.
(disassemble-offset): Update for above change.
2010-11-05 00:32:16 -07:00
Stefan Monnier
0c747cb143 Merge from trunk 2010-10-15 17:55:33 -04:00
Juanma Barranquero
220d91b834 Merge changes from emacs-23 branch. 2010-10-14 16:32:27 +02:00
Juanma Barranquero
c0943d3db2 Fix typos in docstrings, comments and ChangeLogs.
* etc/tutorials/TUTORIAL.es: Fix typos.

* lisp/cedet/semantic/symref/list.el (semantic-symref-list-rename-open-hits):
  Fix typo in message.
  (semantic-symref-list-map-open-hits): Fix typo in docstring.

* lisp/erc/erc-xdcc.el (erc-xdcc-help-text): Fix typo in docstring.

* lisp/gnus/nnmail.el (nnmail-fancy-expiry-targets): Fix typo in docstring.

* lisp/international/mule.el (define-coding-system):
* lisp/international/titdic-cnv.el (quail-cxterm-package-ext-info):
* composite.el (compose-region): Fix typo in docstring.

* lisp/org/org-agenda.el (org-prefix-category-length)
  (org-prefix-category-max-length): Fix typos in docstrings.

* src/font.c (Ffont_variation_glyphs):
* ccl.c (Fccl_execute_on_string): Fix typo in docstring.
2010-10-13 01:25:19 +02:00
Stefan Monnier
a01a793208 Merge from trunk 2010-09-30 01:28:20 +02:00
Juanma Barranquero
95b6d681b1 Merge changes from emacs-23 branch. 2010-09-28 01:25:27 +02:00
Andreas Schwab
c19f76a18b * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Avoid
infinite recursion on erroneous lambda form.  (Bug#7114)
2010-09-27 19:14:58 +02:00
Stefan Monnier
cc390e46c7 Merge from trunk 2010-09-13 16:40:48 +02:00
Chong Yidong
bd78fa1d54 Add "Package:" file headers to denote built-in packages. 2010-08-29 12:17:13 -04:00
Stefan Monnier
b9598260f9 New branch for lexbind, losing all history.
This initial patch is based on 2002-06-27T22:39:10Z!storm@cua.dk of the original
lexbind branch.
2010-06-13 16:36:17 -04:00
Glenn Morris
114f9c9679 Add 2010 to copyright years. 2010-01-13 00:35:10 -08:00
Glenn Morris
ba661bf005 (degrees-to-radians): Mark as free from side effects. 2009-09-10 06:21:48 +00:00
Glenn Morris
ae940284fa Add 2009 to copyright years. 2009-01-05 03:18:22 +00:00
Chong Yidong
cbe5b0eb18 (byte-compile-butlast): Move up in file.
(byte-optimize-plus): Don't call
byte-optimize-delay-constants-math (bug#1334).  Use
byte-optimize-predicate to optimize constants.
(byte-optimize-minus): Don't call
byte-optimize-delay-constants-math.  Remove zero arguments first
if possible.  Call byte-optimize-predicate to optimize constants.
(byte-optimize-multiply): Remove optimizations for arguments of 0
and 2, which may be inaccurate.  Optimize (* x -1) to (- x).  Call
byte-optimize-predicate.
(byte-optimize-divide): Leave runtime errors unchanged.
Optimize (/ x 1) to (+ x 0). Remove optimizations for arguments of
0 and 2.0, which may be inaccurate.  Call byte-optimize-predicate.
2008-11-21 18:51:48 +00:00
Glenn Morris
d6cba7ae45 Switch to recommended form of GPLv3 permissions notice. 2008-05-06 03:21:21 +00:00
Juanma Barranquero
9e60aa0b8c (side-effect-free-fns): Fix typo. 2008-03-25 23:27:11 +00:00
Stefan Monnier
20ce031c40 (byte-compile-trueconstp, byte-compile-nilconstp): No recursion in defsubst. 2008-03-03 21:07:12 +00:00
Stefan Monnier
42521cd491 (byte-optimize-form-code-walker):
Walk into the body of lambdas after byte-compile-unfold-lambda.
2008-03-03 03:38:21 +00:00
Miles Bader
430d2ee291 Merge from emacs--devo--0
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-312
2008-01-09 01:21:15 +00:00
Miles Bader
59ce725a3b Merge from emacs--rel--22
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-987
2008-01-08 20:46:54 +00:00
Glenn Morris
8b72699e88 Add 2008 to copyright years. 2008-01-07 01:14:52 +00:00
Miles Bader
0bd5084171 Merge from emacs--devo--0
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-294
2007-12-06 09:51:45 +00:00
Miles Bader
d4aa48db8e Merge from emacs--rel--22
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-937
2007-11-21 04:55:58 +00:00
Richard M. Stallman
b1dfec553a Comment change. 2007-11-20 12:38:26 +00:00
Juanma Barranquero
f31d0424ea Comment change. 2007-11-14 11:18:54 +00:00
Dan Nicolaescu
d8947b79fc * emacs-lisp/byte-opt.el (byte-compile-trueconstp): Handle more
constant forms.
(byte-compile-nilconstp): New function.
(byte-optimize-cond): Kill subsequent branches when a branch is
know to be taken or not taken.
(byte-optimize-if): Use byte-compile-nilconstp instead of hand
coding.
2007-11-13 16:10:14 +00:00
Miles Bader
f23d76bdef Merge from emacs--devo--0
Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-283
2007-11-11 00:56:44 +00:00
Dan Nicolaescu
70f4194508 * emacs-lisp/byte-opt.el (byte-optimize-featurep): Optimize
(featurep 'emacs) to t.

* emacs-lisp/bytecomp.el (byte-compile-find-bound-condition): New
function.
(byte-compile-maybe-guarded): Use it to also look for bound
symbols inside `and' forms.  Comment out non-working code that was
trying to avoid warnings for XEmacs code.
2007-11-10 08:05:15 +00:00
Miles Bader
18cd1f1a08 Merge from emacs--devo--0
Patches applied:

 * emacs--devo--0  (patch 902-908)

   - Update from CVS
   - Merge from emacs--rel--22

 * emacs--rel--22  (patch 131-137)

   - Update from CVS
   - Merge from gnus--rel--5.10

 * gnus--rel--5.10  (patch 261-262)

   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-278
2007-10-27 09:12:07 +00:00
Stefan Monnier
538a93d833 (byte-optimize-featurep): Fix paren typo. 2007-10-21 20:10:06 +00:00
Miles Bader
2b42d458a4 Merge from emacs--devo--0
Patches applied:

 * emacs--devo--0  (patch 880-885)

   - Remove RCS keywords from doc/misc/cc-mode.texi
   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-264
2007-10-13 05:53:03 +00:00
Glenn Morris
988e29061a (top level): Use mapc rather than mapcar. 2007-10-12 03:00:05 +00:00
Miles Bader
1bb9a689ac Merge from emacs--devo--0
Patches applied:

 * emacs--devo--0  (patch 857-865)

   - Update from CVS
   - Merge from emacs--rel--22
   - Update from CVS: lisp/emacs-lisp/avl-tree.el: New file.
   - Remove RCS keywords

 * emacs--rel--22  (patch 97-100)

   - Update from CVS
   - Merge from gnus--rel--5.10

 * gnus--rel--5.10  (patch 246-247)

   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-252
2007-08-29 05:03:40 +00:00
Miles Bader
7f22a76506 Merge from emacs--rel--22
Patches applied:

 * emacs--rel--22  (patch 97-100)

   - Update from CVS
   - Merge from gnus--rel--5.10

 * gnus--rel--5.10  (patch 246-247)

   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--devo--0--patch-860
2007-08-27 04:00:19 +00:00
Stefan Monnier
9d693d807f (byte-optimize-if): Don't presume `clause' is a list. 2007-08-24 14:39:25 +00:00
Stefan Monnier
40fafc2162 (byte-optimize-if): Move `progn' out of the test
so as to optimise cases where the `progn's result is constant.
2007-08-23 19:56:16 +00:00
Stefan Monnier
5ebfbcdc3f (byte-optimize-featurep): Also handle `sxemacs'. 2007-08-23 15:11:31 +00:00
Miles Bader
b2e6b10fe2 Merge from emacs--devo--0
Patches applied:

 * emacs--devo--0  (patch 846-851)

   - Update from CVS
   - Merge from emacs--rel--22

 * emacs--rel--22  (patch 88-92)

   - Update from CVS
   - Merge from gnus--rel--5.10

 * gnus--rel--5.10  (patch 242-244)

   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-246
2007-08-13 13:48:35 +00:00
Glenn Morris
ab2d877d45 Replace `iff' in doc-strings and comments. 2007-08-08 07:17:12 +00:00
Miles Bader
e468b87f91 Merge from emacs--devo--0
Patches applied:

 * emacs--devo--0  (patch 824-831)

   - Update from CVS
   - Merge from emacs--rel--22

 * emacs--rel--22  (patch 70-74)

   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-238
2007-07-27 10:52:18 +00:00
Glenn Morris
e0085d62fa Switch license to GPLv3 or later. 2007-07-25 04:14:29 +00:00
Miles Bader
991a760232 Merge from emacs--devo--0
Patches applied:

 * emacs--devo--0  (patch 698-710)

   - Update from CVS
   - Merge from gnus--rel--5.10

 * gnus--rel--5.10  (patch 216)

   - Update from CVS

Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-196
2007-04-24 21:56:25 +00:00