]> git.eshelyaron.com Git - emacs.git/commitdiff
Rewrite memory-limit in Lisp
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 16 Jun 2018 15:11:37 +0000 (08:11 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 16 Jun 2018 15:33:36 +0000 (08:33 -0700)
Have it return Emacs virtual memory size, not the sbrk value
which is often useless newadays.
* doc/lispref/internals.texi (Garbage Collection):
* etc/NEWS: Document this.
* lisp/subr.el (memory-limit): New implementation in Lisp,
written in terms of process-attributes, and which returns
virtual memory size.
* src/alloc.c (Fmemory_limit): Remove C implementation.

doc/lispref/internals.texi
etc/NEWS
lisp/subr.el
src/alloc.c

index 9cf1a4f9a324956e73e83f954a787ce4cd10a97c..faaf26f4f7e985eb55a19152054253a93a12ee60 100644 (file)
@@ -507,10 +507,8 @@ function @code{memory-limit} provides information on the total amount of
 memory Emacs is currently using.
 
 @defun memory-limit
-This function returns the address of the last byte Emacs has allocated,
-divided by 1024.  We divide the value by 1024 to make sure it fits in a
-Lisp integer.
-
+This function returns an estimate of the total amount of bytes of
+virtual memory that Emacs is currently using, divided by 1024.
 You can use this to get a general idea of how your actions affect the
 memory usage.
 @end defun
index cecd3f81f850c132fd163d96860c5625b12b5ae2..d59b4a7cf4fce4fa1f218505f25284973880d3bb 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -664,6 +664,9 @@ socket has been passed to Emacs (Bug#24218).
 instead of just Microsoft platforms.  This fixes a 'get-free-disk-space'
 bug on OS X 10.8 and later (Bug#28639).
 
++++
+** 'memory-limit' now returns a better estimate of memory consumption.
+
 +++
 ** New macro 'combine-change-calls' arranges to call the change hooks
 ('before-change-functions' and 'after-change-functions') just once
index 4a2b797fa0cf633964797219a70b89d9efe5495c..8123e60f62aef600464f155ef598f05d551dc735 100644 (file)
@@ -2182,6 +2182,10 @@ It can be retrieved with `(process-get PROCESS PROPNAME)'."
   (set-process-plist process
                     (plist-put (process-plist process) propname value)))
 
+(defun memory-limit ()
+  "Return an estimate of Emacs virtual memory usage, divided by 1024."
+  (or (cdr (assq 'vsize (process-attributes (emacs-pid)))) 0))
+
 \f
 ;;;; Input and display facilities.
 
index 286358662b9552b4554c5e6a9d1c23436d06c755..cc846fd38ee2e185e8d3049b01c6a7558cabac67 100644 (file)
@@ -7120,24 +7120,6 @@ or memory information can't be obtained, return nil.  */)
 
 /* Debugging aids.  */
 
-DEFUN ("memory-limit", Fmemory_limit, Smemory_limit, 0, 0, 0,
-       doc: /* Return the address of the last byte Emacs has allocated, divided by 1024.
-This may be helpful in debugging Emacs's memory usage.
-We divide the value by 1024 to make sure it fits in a Lisp integer.  */)
-  (void)
-{
-  Lisp_Object end;
-
-#if defined HAVE_NS || defined __APPLE__ || !HAVE_SBRK
-  /* Avoid warning.  sbrk has no relation to memory allocated anyway.  */
-  XSETINT (end, 0);
-#else
-  XSETINT (end, (intptr_t) (char *) sbrk (0) / 1024);
-#endif
-
-  return end;
-}
-
 DEFUN ("memory-use-counts", Fmemory_use_counts, Smemory_use_counts, 0, 0, 0,
        doc: /* Return a list of counters that measure how much consing there has been.
 Each of these counters increments for a certain kind of object.
@@ -7495,7 +7477,6 @@ The time is in seconds as a floating point value.  */);
   defsubr (&Smake_finalizer);
   defsubr (&Spurecopy);
   defsubr (&Sgarbage_collect);
-  defsubr (&Smemory_limit);
   defsubr (&Smemory_info);
   defsubr (&Smemory_use_counts);
   defsubr (&Ssuspicious_object);