aboutsummaryrefslogtreecommitdiffstats
path: root/admin/notes/java
diff options
context:
space:
mode:
authorStefan Monnier2025-12-15 22:04:50 -0500
committerStefan Monnier2025-12-15 22:04:50 -0500
commit0eec0d5174a38c2f3a4a2c38e3af9da4a924b0bc (patch)
tree087c9535f80a781657298332fe2b5e5f5bbbcb3d /admin/notes/java
parent4aff16bf9e8be9e45b5ac5b98a323957e3af6444 (diff)
downloademacs-0eec0d5174a38c2f3a4a2c38e3af9da4a924b0bc.tar.gz
emacs-0eec0d5174a38c2f3a4a2c38e3af9da4a924b0bc.zip
(cconv-make-interpreted-closure): Be more conservative
We can't use `cconv-make-interpreted-closure` until it's compiled because it would get called in an infinite recursion. The same holds for a lof of the code needed to compute the interpreted closures used during the computation of `cconv-make-interpreted-closure`. We used to work around this inf-loop in `loadup.el` with a hack that checks if two specific functions have been compiled. In practice that worked well enough in normal use, but was brittle if you ever tried to load `cconv.el`, or Edebug or `M-C-x` that code for whatever reason. So we replace it with a more conservative approach which just short-circuits any recursive invocation. It makes it conservative in that it will sometimes redirect the call to the "dumb" `make-interpreted-closure` even though it would be able to complete the call properly, but it should be infrequent enough to be worth the added reliability. * lisp/loadup.el: Simplify setting of `internal-make-interpreted-closure-function`. * lisp/emacs-lisp/cconv.el (cconv-make-interpreted-closure): Avoid recursive invocations.
Diffstat (limited to 'admin/notes/java')
0 files changed, 0 insertions, 0 deletions