Commit Graph

961 Commits (f47b72d98b01163f7bd28c79ba81a96d63ebc269)

Author SHA1 Message Date
Slava Pestov b2ba465bcd Merge optimizations from master branch 2009-10-31 03:02:19 -05:00
Slava Pestov b202371d62 vm: faster tuple allocation primitives 2009-10-31 02:58:00 -05:00
Slava Pestov d33d7728a0 vm: fix compile error on non-Mac OS X platforms 2009-10-31 02:36:46 -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 6f7607eed7 vm: clean up card unmarking 2009-10-30 03:15:50 -05:00
Slava Pestov 5536003cf8 vm: new GC policy: mark sweep after N megabytes promoted, mark compact if tenured space cannot fit nursery+aging in one contiguous block. N = 32 on 32-bit and 64 on 64-bit 2009-10-30 02:26:57 -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 a7b55e7068 vm: use STL in free list, makes finding largest contiguous free block slightly faster 2009-10-27 18:22:08 -05:00
Slava Pestov d95a98eb9c vm: add primitives for getting at GC events, data-room and code-room primitives now return structs instead of arrays 2009-10-27 03:32:28 -05:00
Slava Pestov 91cec17e52 vm: get GC events working, -verbosegc switch now produces more info 2009-10-26 23:57:26 -05:00
Slava Pestov a60bf14673 vm: add gc_event 2009-10-26 22:12:44 -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 c30df42e48 vm: make compaction its own gc_op 2009-10-25 14:02:14 -05:00
Slava Pestov 7d8c85443e vm: vm: fix large object allocation logic and change default heap image size for 2009 2009-10-25 13:27:40 -05:00
Slava Pestov cf247c23a2 vm: room. now prints mark stack size, and total/contiguous free space 2009-10-25 13:18:06 -05:00
Slava Pestov 49baf397f4 vm: tagged typechecks work better with DEBUG=1 2009-10-25 08:07:36 -05:00
Slava Pestov b7181d14a8 vm: debugging compaction 2009-10-25 08:07:21 -05:00
Slava Pestov b6a21b19a9 vm: fix compaction when callback heap has entries in it 2009-10-25 00:06:45 -05:00
Slava Pestov 0c1e266302 vm: got data heap compaction working 2009-10-24 23:51:14 -05:00
Slava Pestov 0b65b194c9 vm: fix 'data-room' primitive to report correct sizes for tenured space 2009-10-24 23:49:33 -05:00
Slava Pestov fae27fb361 vm: make some more ctors explicit just for kicks 2009-10-24 23:02:58 -05:00
Slava Pestov 62e718eaa9 vm: combine heap_block and code_block structs, eliminates some boilerplate 2009-10-24 21:33:31 -05:00
Slava Pestov 45a955b5bb vm: fix typo in card tracing logic 2009-10-24 04:43:11 -05:00
Slava Pestov d855593f1f vm: clean up code heap visitor 2009-10-24 04:36:29 -05:00
Slava Pestov 03f4b4cdd6 vm: move binary_payload_start() method from factor_vm to object class 2009-10-24 04:27:45 -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 810e309e0c vm: rename userenv to special_objects 2009-10-23 00:33:53 -05:00
Slava Pestov 6597e0ea3a vm/mark_bits.hpp: fix incorrect constructor argument order 2009-10-22 23:41:02 -05:00
Slava Pestov 3394309659 Merge branch 'master' into new_gc 2009-10-22 05:40:57 -05:00
Slava Pestov 3d5c3935ad vm: fix compilation 2009-10-22 06:38:02 -04:00
Slava Pestov f24942e063 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
Joe Groff 432d4f79e9 give better error message for windows exceptions, and don't lop off the top end of the exception code when the vm throws the error 2009-10-21 23:37:51 -05:00
Slava Pestov 606a805d7d vm: debugging mark and sweep 2009-10-21 23:24:35 -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 af855b7fa9 vm: debugging mark-sweep 2009-10-21 19:41:54 -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 a9dbbd1efb vm: simplify code heap by eliminating HeapLayout template parameter 2009-10-20 14:01:46 -05:00
Slava Pestov e482940dca vm: object start recording in cards is now independent of allocation strategy 2009-10-20 13:47:04 -05:00
Slava Pestov d22d5466fc vm: move factor_vm::untagged_object_size() to object::size() 2009-10-20 13:13:39 -05:00
Slava Pestov d85d84697a Change data heap alignment to 16 bytes 2009-10-20 12:45:00 -05:00
Slava Pestov 50f9bf67a7 vm: fix crash when converting a callstack to an array 2009-10-20 12:19:02 -05:00
Slava Pestov acdcb181e0 vm: working on making heap more generic 2009-10-20 10:22:06 -05:00
Slava Pestov 838a44e901 vm: change code heap layout somewhat, remove unused allocation bitmap from mark_bits 2009-10-20 09:37:24 -05:00
Doug Coleman 278a6955c5 Merge branch 'master' into startup 2009-10-20 00:31:45 -04:00
Doug Coleman 110b310c54 the exit primitive is now called (exit) and exit calls shutdown hooks.
add a stop_factor function to the vm to allow calling the shutdown quotation
2009-10-20 00:28:18 -04:00
Slava Pestov d585aa861c Merge branch 'master' of git://factorcode.org/git/factor 2009-10-19 21:44:56 -05:00
Slava Pestov cafa838588 Merge branch 'master' of git://factorcode.org/git/factor into new_gc 2009-10-19 21:44:36 -05:00
Slava Pestov 21d29b3961 vm: change code heap alignment to 16 bytes instead of 32 to reduce image size 2009-10-19 06:10:39 -05:00
Slava Pestov 4ddd63d83e vm: move compaction algorithm to mark_bits.hpp since it doesn't rely on properties of heaps per se 2009-10-19 03:05:20 -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 8ef0d411ac vm: cleanup 2009-10-19 00:16:32 -05:00
Slava Pestov 464aac14cf vm: working on new compaction implementation 2009-10-19 00:07:43 -05:00
Slava Pestov a81f757a62 vm: fix conflict in image.cpp 2009-10-18 20:54:13 -05:00
Slava Pestov 2e65366c6b vm: rename myvm and parent_vm instance variables to parent, clean up casts in primitive definitions 2009-10-18 20:31:59 -05:00
Slava Pestov 236588208b vm: rename F to false_object, and rename T to true_object 2009-10-18 20:26:21 -05:00
Slava Pestov 2b63029da8 vm: fix GC safety issue in non-optimizing compiler 2009-10-18 18:57:41 -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 2917063a1a vm: fix typo 2009-10-16 12:25:21 -05:00
Slava Pestov a955a12aa7 vm: fix compile errors on some gcc versions 2009-10-16 12:13:43 -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 c04412219b vm: allocate stacks and data heap segments without execute permissions 2009-10-16 05:16:12 -05:00
Slava Pestov 85b746e7b5 vm: simpler and more efficient code heap compaction; restructure a few things to get ready for runtime code heap compaction 2009-10-16 04:33:35 -05:00
Slava Pestov 349cb41a29 Merge branch 'reentrantvm' of git://github.com/phildawes/factor 2009-10-16 03:52:35 -05:00
Slava Pestov 0a3d08bc52 vm: make the code nice and pretty 2009-10-16 02:55:02 -05:00
Slava Pestov 70dcecf61a vm: don't flush instruction cache twice per code block on a major GC on PowerPC 2009-10-15 22:31:41 -05:00
Slava Pestov f212549a5f Merge branch 'master' of git://factorcode.org/git/factor 2009-10-15 22:12:00 -05:00
Slava Pestov 8a7547ef1b vm: remove some dead code 2009-10-15 22:06:43 -05:00
Doug Coleman 4c2cdb18b5 fix compiler warning 2009-10-15 21:42:01 -05:00
Doug Coleman 0bb6327688 fix compiler warnings in vm 2009-10-15 21:37:53 -05:00
Slava Pestov 45eb68fa38 vm: during tenuring stage of aging collection, if tenured space fills up, it would attempt a to_tenured collection. this will succeed if all roots were tenured. however, this is unsound, because there's now an untraced segment of tenured space. fix: if tenuring fails, go on to do a full collection instead 2009-10-15 05:51:11 -05:00
Slava Pestov 93ed6e6892 vm: fix compile error 2009-10-14 19:55:02 -05:00
Slava Pestov 38d120f92e vm: rt-vm relocation now supports accessing a field directly 2009-10-14 19:24:23 -05:00
Phil Dawes 7fef05fd76 Removed VM_PTR macros. All builds reentrant by default 2009-10-14 19:14:57 +01:00
Slava Pestov ae90ebe3be vm: faster write barrier for non-optimized code 2009-10-14 06:13:51 -05:00
Slava Pestov 1796688acd vm: during an aging collection, promote objects referenced from tenured directly to tenured 2009-10-14 06:03:52 -05:00
Slava Pestov 236efe4881 vm: debugging new card marking 2009-10-14 04:59:28 -05:00
Slava Pestov 1ce39963fd Working on adding support for the new write barrier to optimized code 2009-10-14 02:06:01 -05:00
Slava Pestov d689be57a5 vm: new card marking implementation supports marking partial objects 2009-10-13 21:16:04 -05:00
Slava Pestov d17c63efa5 vm: rename 2009-10-09 23:37:35 -05:00
Slava Pestov 0bf31e42e6 vm: refactoring card logic a bit 2009-10-09 11:16:18 -05:00
Slava Pestov 1fc48b8894 vm: remove old_data_heap from gc_state 2009-10-09 09:47:54 -05:00
Slava Pestov 639a64c2df vm: fix integer overflow 2009-10-09 05:55:32 -05:00
Slava Pestov ab9b462411 vm: build fix 2009-10-09 05:12:28 -05:00
Slava Pestov 978647dc39 Merge branch 'master' of git://factorcode.org/git/factor 2009-10-09 03:21:31 -05:00
Slava Pestov 95722adebc vm: misc cleanups 2009-10-09 03:20:50 -05:00
Slava Pestov a4ea6ad339 vm: record bytes/objects copied again 2009-10-09 03:20:06 -05:00
Slava Pestov 07deeb407c vm: fix formatting 2009-10-09 02:57:04 -05:00
Slava Pestov f6d4551da5 vm: remove unrolled card scan loop since it appears to be a performance loss 2009-10-09 02:05:31 -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 6e4b4d5830 Fix problem if last card is marked 2009-10-08 23:58:20 -05:00
Slava Pestov cb2673a6f5 vm: cleanup 2009-10-08 23:39:54 -05:00
Slava Pestov 21f55ab1a3 vm: more efficient code heap remembered set 2009-10-08 23:10:32 -05:00
Slava Pestov 43a21deb05 vm: rename data_gc.cpp to gc.cpp 2009-10-08 02:11:29 -05:00
Slava Pestov dbf0dd4a2d vm: split off parts of data_gc into sub-files and clean up logic 2009-10-08 02:10:28 -05:00
Slava Pestov db29d60e8e vm: add code block marking to full_collector.cpp 2009-10-08 00:23:29 -05:00
Slava Pestov 1f8495a62f vm/os-netbsd.cpp: fix double-free error 2009-10-07 21:49:04 -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