Commit Graph

77 Commits (4a29dafcdf17e6c7b3067652a9067514f4f5d747)

Author SHA1 Message Date
Joe Groff 0a1a252cdb vm: replace assert with FACTOR_ASSERT
Factor is finally a real C++ project and has a custom assert macro. Assertion failures were still getting caught as exceptions and causing failure loops. Write our own macro that calls factor::abort on failure.
2011-11-23 11:11:26 -08:00
Joe Groff c31530caec vm: strip out call-counting profiler
This makes the separate "code" and "entry_point" fields in word and quotation redundant, so also remove them to reclaim an additional cell per word and quotation object, which should help with .
2011-11-10 16:01:07 -08:00
Joe Groff 0e3c315099 vm: move bignum.cpp includes to master.hpp
That way they get PCHed
2011-11-08 08:42:47 -08:00
Joe Groff 72d335f2b5 vm: write async signals to pipe for multiplexer
also factor out safepoint logic into its own file
2011-11-08 08:42:46 -08:00
Joe Groff 80fb7788d9 vm: groundwork for sampling profiler
Set up the state necessary to collect samples. We still need to add GC support for walking the sample set, and the compiler needs to register GC roots before safepoints as well. We also need primitives to expose the data to Factor for reporting.
2011-11-02 13:23:06 -07:00
Joe Groff cdfb1b1b94 vm: change "profiler" names to "counting_profiler" 2011-11-02 13:23:05 -07:00
Erik Charlebois 64252dbdbc 32 and 64 bit Linux PPC support 2011-05-23 23:36:14 -04:00
Slava Pestov a36bd7fbaf vm: don't keep more than 10 unused contexts around to prevent address space wastage on low-budget operating systems like OpenBSD 2010-09-17 20:52:27 -07:00
Joe Groff 14de58b73c 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
Slava Pestov 806e54630a GC maps for more compact inline GC checks 2010-06-11 20:06:00 -04:00
Slava Pestov b740a1fe5d vm: use C++ exceptions instead of longjmp(), to make Windows crash more 2010-04-02 14:10:55 -04:00
Slava Pestov 43b2e02534 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
Joe Groff 1c08fde381 yay C89 2010-03-01 17:56:17 -08:00
Joe Groff ac979619e6 record the C++ compiler version in the VM, and expose it with a vm-compiler word 2010-03-01 13:32:07 -08:00
Slava Pestov 942f6e0943 Update Win64 support 2010-01-25 15:39:34 +13:00
Slava Pestov e4da687413 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
Slava Pestov 2aa4d3d432 vm: fix compilation on 64-bit platforms 2010-01-14 02:18:49 +13:00
Slava Pestov 36d2ac8921 vm: move c_to_factor, lazy_jit_compile_impl, throw_impl, set_callstack assembly routines into non-optimizing compiler for x86-64 2010-01-06 15:47:36 +13:00
Slava Pestov 9705768e3f vm: remove DEFPUSHPOP macro 2009-12-04 20:56:48 -05:00
Slava Pestov c6602bda27 Big cleanup of literal table and relocation-related code
- new way to iterate over instruction_operands cleans up relocation code
- move some methods out of the VM class to clean up code
- if debugging is on, die earlier if attempting to allocate inside GC
- callback heap entries are now code_blocks
- replace block_granularity with data_alignment
2009-12-02 00:48:41 -06:00
Slava Pestov 001a3f2847 vm: mark sweep now traces code block references; rename embedded_pointer to instruction_operand 2009-11-23 19:17:12 -06:00
Slava Pestov b28619ce2f vm: minor GC traces embedded pointers 2009-11-22 13:37:39 -06:00
Slava Pestov 57c541ea46 vm: eliminating literal table work in progress 2009-11-07 16:16:09 -06:00
Slava Pestov 72ab6ec548 vm: rewrite 'become' primitive so that it uses a slot visitor instead of GC 2009-11-05 19:03:51 -06:00
Slava Pestov 47df580081 tools.time: overhaul 2009-11-05 01:07:59 -06:00
Slava Pestov 6c2c87758a vm: rename gc_root to data_root, add code_root to fix a problem where code blocks would move underneath the PIC compiler if PIC compiler allocated enough 2009-11-02 18:10:34 -06:00
Slava Pestov e28580dd0f vm: faster sweep algorithm 2009-11-01 20:24:25 -06:00
Slava Pestov b2ba465bcd Merge optimizations from master branch 2009-10-31 03:02:19 -05:00
Slava Pestov 793d0606f6 vm: various minor optimizations speeding up gc0 and dispatch1 benchmarks, as well as bootstrap
- make allot_object() inline, move slow case to allot_large_object()
- reduce number of conditional branches in megamorphic cache miss handler
- make unbox_array_size() inline, move slow case to unbox_array_size_slow()
- new memset_cell() function uses memset_pattern4/8() on Mac OS X
2009-10-31 02:30:48 -05:00
Slava Pestov a1aac42786 vm: clean up gc events, remove -verbosegc switch, fix compaction bug 2009-10-27 21:31:28 -05:00
Slava Pestov e793a72060 vm: remove crummy old GC stats, split off free list code, clean up various other things 2009-10-26 22:08:35 -05:00
Slava Pestov 29a27cfde4 vm: data heap compaction work in progress 2009-10-24 04:18:33 -05:00
Slava Pestov fd1e992e7d vm: factor out code that visits object slots and code heap blocks into slot_visitor and code_block_visitor 2009-10-24 03:54:53 -05:00
Slava Pestov 40351d40be vm: use iostreams instead of printf for debug messages, clean up a few things 2009-10-21 20:12:57 -05:00
Slava Pestov 814f6371d6 vm: mark sweep gc for tenured space work in progress 2009-10-20 22:20:49 -05:00
Slava Pestov f0816d72f1 vm: split off free_list_allocator from heap class, rename zone to bump_allocator 2009-10-20 15:26:11 -05:00
Slava Pestov ac25b8ebbb vm: new mark_bits data structure replaces hashtable when compacting code heap 2009-10-19 02:21:11 -05:00
Slava Pestov 69f9c80b5b vm: code heap: move mark bits to a separate bitmap 2009-10-16 14:41:40 -05:00
Slava Pestov 107c96f642 vm: code heap compaction at runtime using compact-gc primitive 2009-10-16 11:39:35 -05:00
Slava Pestov d34c7854cd vm: simplify card marking logic, and unmark more cards during aging collections by checking if they actually contained young pointers or not 2009-10-09 01:37:45 -05:00
Slava Pestov 43a21deb05 vm: rename data_gc.cpp to gc.cpp 2009-10-08 02:11:29 -05:00
Slava Pestov 6939759f46 vm: working on new object-oriented garbage collector 2009-10-07 15:48:09 -05:00
Slava Pestov 23e133e383 vm: make a new old_space type to encapsulate a few things, split up generations array somewhat 2009-10-07 14:05:09 -05:00
Slava Pestov 651a7fb6fa vm: replace generations array with individual instance variables referencing zone objects 2009-10-07 11:59:59 -05:00
Slava Pestov 16c3251072 vm: free up a cell in compiled code block headers 2009-10-06 05:52:45 -05:00
Slava Pestov b50d3f3fb0 vm: number of generations is not configurable anymore, split up begin_gc() and end_gc() into collect_{nursery,aging,aging_again,tenured}() 2009-10-06 02:39:12 -05:00
Slava Pestov d10e27149c vm: cleanup 2009-10-06 01:42:17 -05:00
Slava Pestov c4ef640f4d Big VM cleanup
- Move forward declarations of 'struct factor_vm' to one place
- Rename template parameters from T and TYPE to descriptive names. New convention: CamelCase for template parameters
- Change some higher-order functions taking function pointers into templates, and define classes overriding operator(). There's a bit of new boilerplate here but its more consistent than the old mish-mash approaches
- Put GC state into a gc_state struct
- Use exceptions instead of longjmp for non-local control transfer in GC
- In code GC, instead of interleaving code block tracing with copying, add code blocks which need to be revisited to an std::set stored in the gc_state
2009-10-03 08:47:05 -05:00
Joe Groff f867a776d9 import std::tr1/boost ::unordered_map into the factor namespace instead of using #define 2009-10-02 11:13:27 -05:00
Phil Dawes 3a88d8c49e inlineimpl.hpp is toast 2009-09-29 19:53:10 +01:00