factor/vm
Joe Groff c3f007ce0a vm: allocate an extra canary page before callstack
This will let us safely unguard the callstack overflow guard page as a grace page so the callstack overflow handler can do its business without discarding frames.
2011-10-27 21:14:49 -07:00
..
Config.arm vm: Remove some dead code 2010-01-07 13:54:22 +13:00
Config.freebsd 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
Config.freebsd.x86.32 Build system cleanup 2007-09-22 00:41:17 -04:00
Config.freebsd.x86.64 Fix compile error on FreeBSD x86.64 2008-07-04 03:23:14 -05:00
Config.linux Move --no-as-needed to Config.linux since it breaks compilation on mac 2011-10-19 12:09:43 -07:00
Config.linux.arm Linux/ARM fixes with help from doublec 2007-11-05 01:40:48 -05:00
Config.linux.ppc.32 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
Config.linux.ppc.64 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
Config.linux.x86.32 Build system cleanup 2007-09-22 00:41:17 -04:00
Config.linux.x86.64 use -fPIC on all platforms for ffi lib 2009-03-27 15:39:13 -05:00
Config.macosx Remove unnecessary -std=gnu99 2011-06-23 01:17:24 -04:00
Config.macosx.ppc 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
Config.macosx.x86.32 add -D_XOPEN_SOURCE flag to suppress ucontext deprecation errors on snow leopard. add -m32 flag when compiling 32-bit because snow leopard gcc defaults to x86_64 2009-08-26 16:29:55 -05:00
Config.macosx.x86.64 Fix for gcc 4.2 2008-11-27 23:32:17 -06:00
Config.netbsd 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
Config.netbsd.x86.32 Add NetBSD support 2008-01-30 10:57:38 +00:00
Config.netbsd.x86.64 Add NetBSD support 2008-01-30 10:57:38 +00:00
Config.openbsd 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
Config.openbsd.x86.32 Build system cleanup 2007-09-22 00:41:17 -04:00
Config.openbsd.x86.64 Build system cleanup 2007-09-22 00:41:17 -04:00
Config.solaris 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
Config.solaris.x86.32 Build system cleanup 2007-09-22 00:41:17 -04:00
Config.solaris.x86.64 Build system cleanup 2007-09-22 00:41:17 -04:00
Config.unix Config.unix: don't hardcode ui libs, use pkg-config instead 2011-10-19 11:37:21 -07:00
Config.windows vm: fix Config.windows 2010-10-02 23:50:48 -05:00
Config.windows.x86.32 Squashed commit of the following: 2010-09-19 19:13:25 -05:00
Config.windows.x86.64 Squashed commit of the following: 2010-09-19 19:13:25 -05:00
Config.x86.32 Add alien-assembly form for inline assembler, works like alien-invoke except calls a user-supplied quotation instead of generating a subroutine call. Replaces FPU status control, SSE detection and read timestamp routines in vm/cpu-x86.*S 2010-01-07 17:39:22 +13:00
Config.x86.64 vm: rework platform.hpp so that it is no longer necessary to pass -DFACTOR_64 and -DWINDOWS when compiling VM 2010-01-13 23:06:45 +13:00
aging_collector.cpp Clean up some GC logic and fix a bug where large object allocation could grow the heap unnecessarily 2011-09-05 16:28:00 -07:00
aging_collector.hpp vm: make some more ctors explicit just for kicks 2009-10-24 23:02:58 -05:00
aging_space.hpp vm: rewrite 'become' primitive so that it uses a slot visitor instead of GC 2009-11-05 19:03:51 -06:00
alien.cpp Tease out symbol name and library in undefined_symbol() handler, for friendlier errors when calling an unresolved C function name. Fixes #93 2011-09-12 00:56:24 -07:00
alien.hpp compiler.cfg: open-code parameter boxing and unboxing for certain C types 2010-07-19 10:25:13 -04:00
allot.hpp Big cleanup of literal table and relocation-related code 2009-12-02 00:48:41 -06:00
arrays.cpp Add code heap introspection primitive to VM, and make a code-blocks word in tools.memory that wraps a useful interface around this. Add a lookup-return-address word and use this in tools.disassembler.utils 2010-02-03 23:11:32 +13:00
arrays.hpp vm: fix compilation with DEBUG=1 2009-11-19 02:08:05 -06:00
bignum.cpp io.binary: make le> and be> faster (20% and 75%, respectively). 2011-10-11 21:13:30 -07:00
bignum.hpp io.binary: make le> and be> faster (20% and 75%, respectively). 2011-10-11 21:13:30 -07:00
bignumint.hpp Fix spaces that crept into vm/ cpp files 2010-02-06 01:06:26 -06:00
bitwise_hacks.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
booleans.cpp More FFI cleanups 2010-05-05 01:13:45 -04:00
booleans.hpp More FFI cleanups 2010-05-05 01:13:45 -04:00
bump_allocator.hpp vm: rewrite 'become' primitive so that it uses a slot visitor instead of GC 2009-11-05 19:03:51 -06:00
byte_arrays.cpp compiler.cfg: nuke ##allot-byte-array instruction 2010-07-16 19:57:45 -04:00
byte_arrays.hpp compiler.cfg: nuke ##allot-byte-array instruction 2010-07-16 19:57:45 -04:00
callbacks.cpp vm: allocate an extra canary page before callstack 2011-10-27 21:14:49 -07:00
callbacks.hpp vm: fix callback heap code on 64-bit Windows 2010-04-04 17:46:36 -04:00
callstack.cpp vm: sketchy signal dispatch from leaf procs 2011-10-27 21:14:49 -07:00
callstack.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
code_block_visitor.hpp vm: have to be extra careful when messing with return addresses 2010-06-13 18:12:57 -04:00
code_blocks.cpp vm: add RT_SAFEPOINT relocation type 2011-10-27 21:14:44 -07:00
code_blocks.hpp Tease out symbol name and library in undefined_symbol() handler, for friendlier errors when calling an unresolved C function name. Fixes #93 2011-09-12 00:56:24 -07:00
code_heap.cpp vm: allocate an extra canary page before callstack 2011-10-27 21:14:49 -07:00
code_heap.hpp vm: handle async signals at safepoints on unix 2011-10-27 21:14:46 -07:00
code_roots.hpp vm: add two missing files 2009-11-02 18:11:12 -06:00
collector.hpp Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction 2010-06-14 19:39:46 -04:00
compaction.cpp vm: fix high_fragmentation_p assertion 2011-09-05 23:30:28 -07:00
compaction.hpp vm: data heap compaction work in progress 2009-10-24 04:18:33 -05:00
contexts.cpp vm: allocate an extra canary page before callstack 2011-10-27 21:14:49 -07:00
contexts.hpp Fix infinite loop and empty-dlist error when an error is thrown from a callback running in a thread other than the initial thread. This addresses part of issue #92 2011-10-02 21:59:09 -07:00
copying_collector.hpp vm: 4 bit tags, new representation of alien objects makes unbox-any-c-ptr more efficient (work in progress) 2009-11-02 04:25:54 -06:00
cpu-arm.hpp vm: Remove some dead code 2010-01-07 13:54:22 +13:00
cpu-ppc.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
cpu-ppc.linux.S 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
cpu-x86.32.hpp vm: remove VM_ASM_API 2009-12-24 01:37:24 +13:00
cpu-x86.64.hpp vm: remove VM_ASM_API 2009-12-24 01:37:24 +13:00
cpu-x86.hpp Get green threads working on Windows 2010-04-03 20:24:33 -04:00
data_heap.cpp vm: allocate an extra canary page before callstack 2011-10-27 21:14:49 -07:00
data_heap.hpp Clean up some GC logic and fix a bug where large object allocation could grow the heap unnecessarily 2011-09-05 16:28:00 -07:00
data_heap_checker.cpp Get optimizing compiler working without global register variables in VM 2009-12-22 15:42:49 +13:00
data_roots.hpp vm: faster data_root and <array> primitive 2009-11-06 05:30:37 -06:00
debug.cpp vm: add factorbug command to throw exception 2011-10-27 21:14:49 -07:00
debug.hpp Moved PRIMITIVE and PRIMITIVE_FORWARDs to primitives.[ch]pp 2009-09-27 19:42:18 +01:00
dispatch.cpp vm: add a new rc-absolute-1 relocation class to allow storing values in 8-bit operands, and optimized code sequences for inline caches using this 2010-04-12 14:22:41 -07:00
dispatch.hpp tools.time: overhaul 2009-11-05 01:07:59 -06:00
entry_points.cpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
entry_points.hpp Fix three problems discovered by running math.floats.env tests in a loop: 2010-09-02 22:57:14 -05:00
errors.cpp vm: allocate an extra canary page before callstack 2011-10-27 21:14:49 -07:00
errors.hpp vm: add factorbug command to throw exception 2011-10-27 21:14:49 -07:00
factor.cpp vm: don't mix iostream and stdio 2011-10-27 21:14:48 -07:00
factor.hpp vm: split up TLS code and add a dummy implementation for a dummy OS known as NetBSD 2010-03-29 02:23:21 -04:00
factor.rs vm: change id of windows app icon resource to more standard "APPICON" 2010-02-15 11:26:56 -08:00
ffi_test.c vm: fix compiler warnings raised by CL 2010-04-12 18:12:55 -05:00
ffi_test.h add tests for struct returns from fastcall 2010-04-01 23:52:56 -07:00
fixup.hpp GC maps for more compact inline GC checks 2010-06-11 20:06:00 -04:00
float_bits.hpp vm: fix indentation in Joe's changes 2009-09-14 03:09:03 -05:00
free_list.cpp Big cleanup of literal table and relocation-related code 2009-12-02 00:48:41 -06:00
free_list.hpp vm: Tweak Factor VM to compile with Microsoft Visual Studio on Windows, in addition to Mingw. Add an Nmakefile which can be used for this purpose. Rename Makefile to GNUmakefile. 2010-01-17 03:43:22 +13:00
free_list_allocator.hpp vm: improved fingering technique 2010-06-16 19:08:58 -04:00
full_collector.cpp Clean up some GC logic and fix a bug where large object allocation could grow the heap unnecessarily 2011-09-05 16:28:00 -07:00
full_collector.hpp GC maps for more compact inline GC checks 2010-06-11 20:06:00 -04:00
gc.cpp vm: fix high_fragmentation_p assertion 2011-09-05 23:30:28 -07:00
gc.hpp vm: don't call nano_count() from the GC at all, unless GC event recording is on 2010-09-04 13:21:45 -07:00
gc_info.cpp vm: fix 64-bit regression 2010-10-09 15:14:14 -07:00
gc_info.hpp vm: fix 64-bit regression 2010-10-09 15:14:14 -07:00
generic_arrays.hpp vm: no-op reallot_array with same size, for real 2011-10-17 21:23:01 -07:00
image.cpp Tease out symbol name and library in undefined_symbol() handler, for friendlier errors when calling an unresolved C function name. Fixes #93 2011-09-12 00:56:24 -07:00
image.hpp vm: actually use context callstacks when running code 2010-03-26 22:44:43 -04:00
inline_cache.cpp vm: add a new rc-absolute-1 relocation class to allow storing values in 8-bit operands, and optimized code sequences for inline caches using this 2010-04-12 14:22:41 -07:00
inline_cache.hpp Moved PRIMITIVE and PRIMITIVE_FORWARDs to primitives.[ch]pp 2009-09-27 19:42:18 +01:00
instruction_operands.cpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
instruction_operands.hpp vm: add RT_SAFEPOINT to number_of_parameters() 2011-10-27 21:14:45 -07:00
io.cpp vm: non-copying primitive_fread 2011-10-17 21:22:57 -07:00
io.hpp Refactor error handling in io.cpp. Update image.cpp and header files for changes. 2010-02-04 23:53:54 -06:00
jit.cpp Rework non-optimizing compiler backend to use compiler.codegen.relocation 2011-10-03 00:26:21 -07:00
jit.hpp Rework non-optimizing compiler backend to use compiler.codegen.relocation 2011-10-03 00:26:21 -07:00
layouts.hpp GC maps for more compact inline GC checks 2010-06-11 20:06:00 -04:00
mach_signal.cpp vm: factor out dispatch_signal_handler logic 2011-10-27 21:14:49 -07:00
mach_signal.hpp vm: hard tabs, indent width 8 2010-08-02 20:50:34 -04:00
main-unix.cpp thread_id is a pthread_t on unix 2009-09-16 08:20:51 +01:00
main-windows.cpp Squashed commit of the following: 2010-09-19 19:13:25 -05:00
mark_bits.hpp GC maps for more compact inline GC checks 2010-06-11 20:06:00 -04:00
master.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
math.cpp vm: remove math::bignum_producer. 2011-10-11 21:24:38 -07:00
math.hpp Remove bignum>float VM primitive, and use bignum/f to implement >float on bignums instead, for a slight accuracy gain. Also, bignum/f now has a more efficient post-scaling algorithm to break the circular dependency on bignum>float 2010-11-24 22:41:15 -08:00
mvm-none.cpp vm: handle async signals at safepoints on unix 2011-10-27 21:14:46 -07:00
mvm-unix.cpp vm: handle async signals at safepoints on unix 2011-10-27 21:14:46 -07:00
mvm-windows.cpp vm: handle async signals at safepoints on unix 2011-10-27 21:14:46 -07:00
mvm.cpp vm: fix typos 2010-03-29 02:27:45 -04:00
mvm.hpp vm: handle async signals at safepoints on unix 2011-10-27 21:14:46 -07:00
nursery_collector.cpp vm: don't call nano_count() from the GC at all, unless GC event recording is on 2010-09-04 13:21:45 -07:00
nursery_collector.hpp vm: make some more ctors explicit just for kicks 2009-10-24 23:02:58 -05:00
nursery_space.hpp vm: make some more ctors explicit just for kicks 2009-10-24 23:02:58 -05:00
object_start_map.cpp vm: Tweak Factor VM to compile with Microsoft Visual Studio on Windows, in addition to Mingw. Add an Nmakefile which can be used for this purpose. Rename Makefile to GNUmakefile. 2010-01-17 03:43:22 +13:00
object_start_map.hpp vm: faster sweep algorithm 2009-11-01 20:24:25 -06:00
objects.cpp compiler.cfg: open-code parameter boxing and unboxing for certain C types 2010-07-19 10:25:13 -04:00
objects.hpp Change do-callback to register the current thread with the callback, instead of busy waiting for the current callback to become the right one before returning. Fixes 100% CPU usage issue with system-alert. Thanks to Blei and ex-rzr for doing preliminary analysis of the issue 2011-04-12 21:48:54 -04:00
os-freebsd-x86.32.hpp Fix spaces that crept into vm/ cpp files 2010-02-06 01:06:26 -06:00
os-freebsd-x86.64.hpp Fix spaces that crept into vm/ cpp files 2010-02-06 01:06:26 -06:00
os-freebsd.cpp removed vm ptr from mach_signal and some other places 2009-09-16 08:20:51 +01:00
os-freebsd.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-genunix.cpp vm: speed up nano-count primitive on Mac OS X 2010-04-11 20:26:11 -07:00
os-genunix.hpp vm: don't try loading Factor VM DLL anymore 2010-04-02 00:03:26 -04:00
os-linux-arm.cpp vm: clean up TLS usage 2010-03-27 03:44:40 -04:00
os-linux-arm.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-linux-ppc.32.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-linux-ppc.64.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-linux-x86.32.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-linux-x86.64.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-linux.cpp Remove inotify system call wrappers. Hopefully everyone is using a recent glibc now. Fixes #86 2011-09-08 22:03:56 -07:00
os-linux.hpp Remove inotify system call wrappers. Hopefully everyone is using a recent glibc now. Fixes #86 2011-09-08 22:03:56 -07:00
os-macosx-ppc.hpp vm: hard tabs, indent width 8 2010-08-02 20:50:34 -04:00
os-macosx-x86.32.hpp vm: hard tabs, indent width 8 2010-08-02 20:50:34 -04:00
os-macosx-x86.64.hpp vm: hard tabs, indent width 8 2010-08-02 20:50:34 -04:00
os-macosx.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-macosx.mm vm: remove some mixed use of stdio/iostream. when monotonic timer decreases, log old and new values 2010-08-01 16:14:20 -07:00
os-netbsd-x86.32.hpp vm: clean up signal handling and add EXC_BAD_INSTRUCTION Mach exception handler for OS X, since signal handlers cannot change the stack pointer 2009-10-22 05:22:59 -05:00
os-netbsd-x86.64.hpp vm: clean up signal handling and add EXC_BAD_INSTRUCTION Mach exception handler for OS X, since signal handlers cannot change the stack pointer 2009-10-22 05:22:59 -05:00
os-netbsd.cpp vm/os-netbsd.cpp: fix double-free error 2009-10-07 21:49:04 -05:00
os-netbsd.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-openbsd-x86.32.hpp vm: clean up signal handling and add EXC_BAD_INSTRUCTION Mach exception handler for OS X, since signal handlers cannot change the stack pointer 2009-10-22 05:22:59 -05:00
os-openbsd-x86.64.hpp vm: clean up signal handling and add EXC_BAD_INSTRUCTION Mach exception handler for OS X, since signal handlers cannot change the stack pointer 2009-10-22 05:22:59 -05:00
os-openbsd.cpp Change (void) to () 2009-05-05 11:33:35 -05:00
os-openbsd.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-solaris-x86.32.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-solaris-x86.64.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
os-solaris.cpp Change (void) to () 2009-05-05 11:33:35 -05:00
os-unix.cpp vm: allocate an extra canary page before callstack 2011-10-27 21:14:49 -07:00
os-unix.hpp Change how SIGPIPE is ignored, and add a unit test to io.launcher.unix to ensure that this ignoredness is not inherited by child processes 2010-09-02 22:11:45 -07:00
os-windows-x86.32.cpp Remove Windows CE from core/ basis/ and build-support/ 2011-09-18 23:19:06 -05:00
os-windows-x86.64.cpp Squashed commit of the following: 2010-09-19 19:13:25 -05:00
os-windows.32.hpp Squashed commit of the following: 2010-09-19 19:13:25 -05:00
os-windows.64.hpp Squashed commit of the following: 2010-09-19 19:13:25 -05:00
os-windows.cpp vm: allocate an extra canary page before callstack 2011-10-27 21:14:49 -07:00
os-windows.hpp Remove Windows CE from core/ basis/ and build-support/ 2011-09-18 23:19:06 -05:00
platform.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
primitives.cpp Using a higher-order C macro to clean up duplication in declaring/defining VM primitives 2010-03-19 14:05:14 -04:00
primitives.hpp vm: remove unguard-safepoint primitive 2011-10-27 21:14:47 -07:00
profiler.cpp vm: modify-code-heap primitive now takes a pair of parameters, update-existing? and reset-pics?. If no generic words were changed, PICs do not need to be reset. If no existing words were redefined, the code heap doesn't have to be traced at all. Speeds up compilation of PEGs since those create lots of compilation units 2010-02-03 23:11:28 +13:00
profiler.hpp Moved PRIMITIVE and PRIMITIVE_FORWARDs to primitives.[ch]pp 2009-09-27 19:42:18 +01:00
quotations.cpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
quotations.hpp vm: remove VM_ASM_API 2009-12-24 01:37:24 +13:00
run.cpp vm: hard tabs, indent width 8 2010-08-02 20:50:34 -04:00
run.hpp vm: rewrite 'become' primitive so that it uses a slot visitor instead of GC 2009-11-05 19:03:51 -06:00
safeseh.asm vm/safeseh.asm: make exception_handler proto declaration explicitly "proto c" so linking works properly with VS 2010 (reported by Doug Coleman) 2010-06-24 13:19:02 -07:00
segments.hpp vm: allocate an extra canary page before callstack 2011-10-27 21:14:49 -07:00
slot_visitor.hpp vm: fix 64-bit regression 2010-10-09 15:14:14 -07:00
strings.cpp strings: move string-nth primitive out of the VM and into the library 2010-05-03 17:34:12 -04:00
strings.hpp vm: use iostreams instead of printf for debug messages, clean up a few things 2009-10-21 20:12:57 -05:00
tagged.hpp New identity-hashcode primitive 2009-11-10 21:18:54 -06:00
tenured_space.hpp vm: mark sweep now traces code block references; rename embedded_pointer to instruction_operand 2009-11-23 19:17:12 -06:00
to_tenured_collector.cpp vm: don't call nano_count() from the GC at all, unless GC event recording is on 2010-09-04 13:21:45 -07:00
to_tenured_collector.hpp vm: mark sweep now traces code block references; rename embedded_pointer to instruction_operand 2009-11-23 19:17:12 -06:00
tuples.cpp vm: eliminating register variables work in progress. Works on x86-32 with non-optimizing compiler 2009-12-19 10:59:56 +13:00
tuples.hpp vm: move binary_payload_start() method from factor_vm to object class 2009-10-24 04:27:45 -05:00
utilities.cpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
utilities.hpp 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
vm.cpp vm: fep on SIGINT or SIGQUIT instead of exception 2011-10-27 21:14:49 -07:00
vm.hpp vm: sketchy signal dispatch from leaf procs 2011-10-27 21:14:49 -07:00
words.cpp compiler.cfg: open-code parameter boxing and unboxing for certain C types 2010-07-19 10:25:13 -04:00
words.hpp vm: change code heap layout somewhat, remove unused allocation bitmap from mark_bits 2009-10-20 09:37:24 -05:00
write_barrier.hpp vm: new card marking implementation supports marking partial objects 2009-10-13 21:16:04 -05:00