Commit graph

27 commits

Author SHA1 Message Date
Dimitris Papavasiliou
c2a0bdb2c6 Partially fix SEXP_USE_MALLOC. 2022-01-09 14:44:02 +02:00
Alex Shinn
7bbbb1fb2c avoid gc recursion on non-pointers 2020-05-25 18:50:47 +09:00
Vitaliy Mysak
5726c2e490 Prevent stack overflow in sexp_mark_one (issue #601)
Replace explicit recursion by heap allocations
in sexp_mark_one code.
This prevents crashes caused by stack overflow.
In particular, fixes issue #601.

As an optimization, allocate a fixed sized stack buffer first,
which should be enough for "normal" uses.
When that stack overflows, switch to heap.

Also, store "ranges" on the stack, instead of the actual sexp's,
using the fact that sexp's of a single parent are continous in memory.

This patch doesn't remove recursion on the context saves
because it didn't seem like they overflow in practice.
But changing that is simple having the stack interface.
2020-05-15 20:11:50 +02:00
Alex Shinn
83e82f55a7 tweaks for fixed-size heaps, fix issue #632 2020-05-11 10:43:36 +09:00
Alex Shinn
abe8ca3b95 obi-wan error 2020-05-07 21:48:51 +09:00
Alex Shinn
e3db106f96 instrumenting alloc times and sizes 2020-05-06 23:39:01 +09:00
Alex Shinn
9100909ae1 better defaults and debugging for fixed size chunks 2020-05-05 00:41:20 +09:00
Alex Shinn
156ddf793d better benchmark timing 2020-05-03 17:05:53 +09:00
Kris Katterjohn
a1473f69ba mmapped heaps: fix for systems with W^X policies
Using read/write/exec causes an error (or possibly abort) on systems
with W^X policies (like OpenBSD and NetBSD have by default).

Since the heap does not need to be executable, just use read/write.
2019-10-04 20:50:41 -05:00
Kris Katterjohn
25d4807f50 mmapped heaps: fix the file descriptor argument to mmap for the BSDs
On the BSDs, the file descriptor passed to mmap when using MAP_ANON
must be -1.  Passing 0 causes mmap to fail.
2019-10-04 20:39:37 -05:00
Kris Katterjohn
650be6adc0 mmapped heaps: correctly check for mmap failure
When mmap fails it returns MAP_FAILED, not NULL.  POSIX does not
define the value for MAP_FAILED, but on at least the BSDs and Linux
its value is ((void *) -1).
2019-10-04 20:38:15 -05:00
Alex Shinn
09b564ed7b catch failure to grow heap 2019-03-03 23:30:00 +08:00
Alex Shinn
e5f6c1bbba adding better debugging for zero-sized object warning 2018-02-16 17:01:21 +09:00
okuoku
e092923aac Win32: Fix win32 port
Try to fix win32 port. Now it runs both on Win32/Win64.

Win64 port currently depends on 128bits arithmetic thus it does not run on
MSVC.

Makefile now have EXCLUDE_POSIX_LIBS knob to exclude posix related library
from build.

Introduce msys PLATFORM for Makefile.detect to use MSYS's POSIX
emulation layer. It is intended for linking against MSYS tools; it is
not for embedding to Win32 applications.
2017-11-11 04:31:06 +09:00
Alex Shinn
8ff6d7f4b8 remove // comments, uneeded checks 2016-02-20 23:35:41 +09:00
Chris Walsh
2005c19ea0 Added full support for packed images, both for static and dynamic libraries. 2016-02-15 21:12:58 -05:00
Alex Shinn
0c856a1bba fixing debug_gc build 2015-06-28 16:37:30 +09:00
Alex Shinn
f256fc219e optimizing type lookup in sexp_mark 2015-06-27 20:54:30 +09:00
Alex Shinn
49505b4849 adding count to gc timer 2015-06-27 20:43:43 +09:00
Alex Shinn
bd42ffaecd with fixed sized chunk heaps, grow a new heap for the chunk size when applicable 2015-06-14 23:18:36 +09:00
Alex Shinn
950312f13b adding optional tracking of gc time 2015-06-14 23:03:19 +09:00
Alex Shinn
b4c7a7081d Don't bother resetting weak references if none have been allocated. 2015-06-14 16:58:48 +09:00
Alex Shinn
d1c71adb40 Reporting time spec in GC when SEXP_USE_DEBUG_GC > 0. 2015-06-14 16:35:54 +09:00
Alex Shinn
6db194171e Adding option to disable automatic running of finalizers altogether. 2015-06-14 16:19:55 +09:00
Alex Shinn
24a880ad28 Adding fixed-size heaps as an experimental compile-time option. 2015-04-25 22:24:56 +09:00
Alex Shinn
4dda923081 Updating copyright years. 2015-04-09 01:28:02 +09:00
Alex Shinn
2922ed591d Forgot to install regexp (patch from Lorenzo) 2015-01-26 08:06:59 +09:00