Commit Graph

1221 Commits (6f75e84d93fd93e50b8f7681e7513a70317730e3)

Author SHA1 Message Date
Slava Pestov 81430947d5 PowerPC: fix set-callstack primitive and start updating optimizing compiler backend for recent changes 2009-12-28 08:08:15 -06:00
Slava Pestov 285caff08e Updating non-optimizing PowerPC backend for register variable removal (untested) 2009-12-28 12:40:45 +13:00
Slava Pestov 4d70649914 Merge branch 'eliminating_register_variables' 2009-12-27 01:29:53 +13:00
Slava Pestov a77f48fe6b Updating x86-64 port for global register variable removal 2009-12-27 01:17:42 +13:00
Slava Pestov 67153bf4bb Fix bug in c_to_factor 2009-12-26 15:24:46 +13:00
Slava Pestov 7271900e6f vm: code cleanup 2009-12-26 15:24:21 +13:00
Doug Coleman 7fa3b71c07 Add 0xe06d7363 to debugger.windows. Remove case 0xe06d7363 from SEH. 2009-12-23 14:04:52 -06:00
Slava Pestov 15eb8d1a0a vm: remove VM_ASM_API 2009-12-24 01:37:24 +13:00
Doug Coleman ab7792f25c remove debug output 2009-12-22 14:39:30 -06:00
Doug Coleman 7077cb4bfb try a different approach to fix the windows monotonic counter 2009-12-22 14:36:33 -06:00
Doug Coleman c84f46fe8b Ignore yet another undocumented exception. Tricks of the trade, I guess. 2009-12-22 13:33:39 -06:00
Slava Pestov 2b8521a326 Merge branch 'master' into eliminating_register_variables 2009-12-22 15:50:15 +13:00
Slava Pestov febccd5f62 vm: if an aging GC is triggered while uninitialized code blocks are in the code heap, the code heap remembered set becomes out of date, resulting in code blocks pointing at invalid data 2009-12-22 15:49:21 +13:00
Slava Pestov e96404327e Get optimizing compiler working without global register variables in VM 2009-12-22 15:42:49 +13:00
Slava Pestov 63edd20a55 vm: eliminating register variables work in progress. Works on x86-32 with non-optimizing compiler 2009-12-19 10:59:56 +13:00
Slava Pestov eb0a28aa54 Merge branch 'master' of git://factorcode.org/git/factor 2009-12-15 07:21:17 -05:00
Slava Pestov 0068bce934 vm: big overhaul of non-optimizing compiler
- change some primitives into sub-primitives: fixnum+ fixnum- fixnum* inline-cache-miss inline-cache-miss-tail
- rename some relocation types for clarity
- some other minor re-organizations and cleanups
2009-12-15 07:20:09 -05:00
Slava Pestov dde84a11fb Merge branch 'master' of git://factorcode.org/git/factor 2009-12-14 01:09:40 -06:00
Slava Pestov 0a3c5f5ac6 vm: fep out if monotonic counter decreases 2009-12-14 01:09:04 -06:00
Doug Coleman b0b1da0923 Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
	vm/os-windows-nt.cpp
2009-12-13 20:45:40 -06:00
Doug Coleman 0eccec2133 workaround for QueryPerformanceCounter: if the high part of the count doesn't increment when the low part overflows, keep track of this and add the correction on future calls to nano_count 2009-12-13 20:42:51 -06:00
Doug Coleman 1454e534fe fix a couple of warnings on win64 2009-12-13 20:00:02 -06:00
Slava Pestov 62e7aed2d3 vm/os-windows-nt.cpp: fix formatting 2009-12-13 16:52:59 -06:00
Slava Pestov 564934a9f1 fix compiler warning on linux 2009-12-13 16:10:30 -06:00
Slava Pestov 6552a4524c vm: OS X version ccheck was failing on 10.5.0 2009-12-11 19:31:19 -05:00
Slava Pestov 344c357ef1 vm: grow the heap if a full collection doesn't reclaim enough space 2009-12-05 19:03:53 -05:00
Slava Pestov 9705768e3f vm: remove DEFPUSHPOP macro 2009-12-04 20:56:48 -05:00
Slava Pestov ead592697b vm: be more eager to do a full collection to avoid fragmentation leading to heap growth 2009-12-04 03:41:19 -05:00
Slava Pestov 9963d265ba vm: fix walker 2009-12-02 18:43:45 -05:00
Slava Pestov 998cc59dbc vm: PowerPC fixes 2009-12-02 16:24:42 -06:00
Slava Pestov d76d49d6cd Fix typo in instruction_operand::load_value_masked() 2009-12-02 09:24:23 -05:00
Slava Pestov 514043eb14 vm: fix instruction_operand::load_value() for PowerPC relocation classes 2009-12-02 09:20:33 -05:00
Slava Pestov 066d2836ca Get modify-code-heap working if stack traces are stripped (but then it won't update existing code blocks), and rename code_heap::code_heap_free() to code_heap::free() 2009-12-02 05:27:48 -06:00
Slava Pestov eb840dcf41 RT_HERE now takes its argument from the literal table rather than the parameter table, reducing image size further 2009-12-02 04:55:48 -06:00
Slava Pestov 68c09f0e93 Split literal table into literal and parameter tables, literal table is discarded after code block initialization 2009-12-02 04:28:15 -06:00
Slava Pestov 147edb1ce9 vm: update callback stub machine code at the end of compaction to prevent it from seeing an inconsistent data stack 2009-12-02 03:31:57 -06:00
Slava Pestov d49c86ba11 vm: Clean up more code duplication and rename a few methods 2009-12-02 01:17:30 -06:00
Slava Pestov d664507b36 vm: factor out common code between image loading and initial code block relocation 2009-12-02 00:54:16 -06: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 260cc9e2ff vm: growing heap no longer uses relocate_code_block() 2009-11-28 19:48:26 -06:00
Slava Pestov 9a79a6253c vm: fix some typos 2009-11-27 22:54:24 -06:00
Slava Pestov 333c7654ae Merge branch 'no_literal_table' of git://factorcode.org/git/factor into no_literal_table 2009-11-27 18:33:34 -06:00
Slava Pestov b683ecaa74 Merge branch 'master' of git://factorcode.org/git/factor into no_literal_table 2009-11-27 18:32:21 -06:00
Slava Pestov 58c21a1a11 vm: new image relocation that doesn't use literal table 2009-11-27 17:05:08 -06:00
Slava Pestov bd02eef38e Fix non-tail recursive inline recursive compilation 2009-11-25 19:12:09 -06:00
Slava Pestov 77a877789a vm: new implementation of modify-code-heap that doesn't use literal tables 2009-11-25 17:20:48 -06:00
Slava Pestov 4ebaf956c3 vm: non-optimizing compiler now compiles word definition quotations with the owner set to the word object 2009-11-24 22:44:04 -06:00
Slava Pestov 73e105bfc4 vm: flush icache after GC 2009-11-24 21:36:35 -06:00
Slava Pestov b09d6ef586 vm: deallocate old PIC after allocating the new one to avoid having the code heap potentially point to a free block during compaction 2009-11-24 21:20:23 -06:00
Slava Pestov bfd4cce364 vm: compaction now updates the needs_fixup set 2009-11-24 19:29:59 -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 57fe0dea48 Fix conflict 2009-11-22 02:12:44 -06:00
Doug Coleman 6b780f5843 fix openbsd compile 2009-11-30 12:58:39 -06:00
Doug Coleman bce084ac12 fix windows compile error 2009-11-20 04:21:21 -06:00
Slava Pestov 24c3ddbbde Clean up startup/shutdown hook code 2009-11-20 00:57:49 -06:00
Doug Coleman 987602235e remove sleep_micros, add sleeo_nanos to vm 2009-11-19 04:49:29 -06:00
Slava Pestov 2e3207b590 vm: fix compilation with DEBUG=1 2009-11-19 02:08:05 -06:00
Slava Pestov f47b72d98b Fix potential assertion failure if GC was invoked while enabling profiling 2009-11-19 01:49:26 -06:00
Doug Coleman 251ebb7f91 vm/Config.openbsd: pass in -fno-inline-functions to work around apparent gcc bug 2009-11-18 19:06:26 -06:00
Doug Coleman 6f7ec206a1 rename millis to system-millis, micros to system-micros, add nano-count 2009-11-18 15:58:48 -06:00
Doug Coleman 0145f0f860 link against librt 2009-11-18 11:09:05 -06:00
Doug Coleman 60d8ef22b8 fix current_nanos on windows 2009-11-18 11:04:46 -06:00
Doug Coleman b4206f5252 initial commit to nanos branch to replace micros 2009-11-18 04:20:05 -06:00
Slava Pestov cf35ffb126 vm: fix problem in card marking if first block is free 2009-11-16 00:52:32 -06:00
Doug Coleman 51e21a6aa8 update vm for startup branch 2009-11-15 02:53:02 -06:00
Doug Coleman cc194416f9 Merge branch 'master' into startup
Conflicts:
	core/bootstrap/primitives.factor
	vm/run.hpp
2009-11-15 02:52:50 -06:00
Slava Pestov 4c268f2600 vm: record compaction events correctly 2009-11-13 09:29:21 -06:00
Slava Pestov 86da8ebed9 Instead of bumping the definition counter every time in the VM, bump it only if stack effects changed or macros were redefined 2009-11-13 03:52:14 -06:00
Slava Pestov cba12eae37 Invalidate inline caches used by call( and execute( when words are redefined 2009-11-12 16:09:07 -06:00
Slava Pestov 9a475570e4 Revert "Revert "vm: faster allocation in tenured space and code heap. If small free list exhausted, allocate a 1kb block and split it up instead of searching larger free lists""
This reverts commit 81a68ebd36.
2009-11-11 19:33:50 -06:00
Slava Pestov c2b3d6b894 vm: fix fencepost error in write barrier on large object allocation; fixes benchmark.sort crash 2009-11-11 19:31:18 -06:00
Slava Pestov 5169dddc40 Revert "vm: faster allocation in tenured space and code heap. If small free list exhausted, allocate a 1kb block and split it up instead of searching larger free lists"
This reverts commit 9af2fa1957.
2009-11-11 05:47:22 -06:00
Slava Pestov 2c8f67851e vm: fix GC safety issue in callers of unbox_array_size(), and change how disable-gc-events works so that it doesn't make a byte array that's too large 2009-11-11 05:21:03 -06:00
Slava Pestov 2afd7ce244 Faster identity-hashcode primitive; fast path now opencoded by the compiler 2009-11-11 02:27:19 -06:00
Slava Pestov 064c00f78d New identity-hashcode primitive 2009-11-10 21:18:54 -06:00
Slava Pestov 4162ee2127 vm: faster allocation in tenured space and code heap. If small free list exhausted, allocate a 1kb block and split it up instead of searching larger free lists 2009-11-10 20:19:29 -06:00
Slava Pestov cb6552ae6e vm/contexts: cleanup 2009-11-08 19:44:18 -06:00
Slava Pestov 8b52d85aed vm: minor cleanup 2009-11-08 06:08:17 -06:00
Samuel Tardieu 351e795a52 Add parentheses to prevent GCC warning 2009-11-08 02:01:48 +01:00
Slava Pestov 57c541ea46 vm: eliminating literal table work in progress 2009-11-07 16:16:09 -06:00
Slava Pestov 43e08c76fb vm: on 32-bit, the largest free block size was only 512mb, leading to weird errors if the heap grew beyond this. eliminate this limit 2009-11-06 08:44:36 -06:00
Slava Pestov 11075828e5 vm: faster data_root and <array> primitive 2009-11-06 05:30:37 -06:00
Slava Pestov eac0f9ffcf vm: report true size of mark stack 2009-11-06 04:15:55 -06:00
Slava Pestov c512013220 vm: fix crash if all-instances primitive triggers a GC 2009-11-06 01:41:11 -06:00
Slava Pestov 84e191704e vm: fix crash in profiler 2009-11-06 01:22:53 -06:00
Slava Pestov e2107166ff vm: restructure data_roots so that its a sequence of handle/len pairs rather than just handles, use it in inline_gc() and all_instances() so that we don't run out of heap while building the object array 2009-11-06 00:54:28 -06:00
Slava Pestov b011295300 vm: fix 'become' when aging space is empty 2009-11-05 23:53:53 -06:00
Slava Pestov c08d325132 Remove unused error from VM 2009-11-05 21:52:31 -06:00
Slava Pestov 4061951d1c vm: simpler object space implementation. begin-scan/next-object/end-scan primitives replaced by a single all-instances primitive 2009-11-05 21:49:03 -06:00
Slava Pestov 18a2ce1f8c vm: remove some dead code 2009-11-05 19:32:26 -06:00
Slava Pestov 22c717616c vm: speed up some bit twiddling on 32-bit 2009-11-05 19:29:27 -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 2b1a26228b Align stack pointer on non-Mac OS X x86-32 platforms, and use aligned loads/stores for SIMD values 2009-11-03 23:51:44 -06:00
Slava Pestov e1c365e69a vm: fix issue with unnecessary heap growth 2009-11-03 22:25:22 -06:00
Slava Pestov 9ffb01a9bd vm: fix fixnum* overflow case for 4-bit tags 2009-11-03 21:40:47 -06:00
Slava Pestov ed3ab1335e vm: minor fixes after code review 2009-11-03 04:56:58 -06:00
Slava Pestov 2c0531b015 vm: faster immediate_p() 2009-11-02 20:21:21 -06:00
Slava Pestov 3b767c4d08 vm: remove debug messages 2009-11-02 18:24:04 -06:00
Slava Pestov 68217016d0 vm: add two missing files 2009-11-02 18:11:12 -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 e4ad642134 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
Slava Pestov 7e17c3077c vm: new megamorphic hashcode algorithm improves bootstrap speed 2009-11-02 01:37:58 -06:00
Slava Pestov 94e9230ba3 vm: promote objects referenced from compiled code blocks directly to tenured in an aging collection 2009-11-01 23:14:34 -06:00
Slava Pestov b2d96e5ef1 vm: remove debug messages 2009-11-01 20:34:54 -06:00
Slava Pestov e28580dd0f vm: faster sweep algorithm 2009-11-01 20:24:25 -06:00
Slava Pestov 882daae06c vm: more sweep phase optimizations 2009-11-01 04:40:15 -06:00
Slava Pestov 5ae40e26ee vm: remove promotion strategy, clean up compaction code 2009-11-01 03:47:09 -06:00
Slava Pestov 7cbaf3e0a3 vm: don't do a data compaction when growing the data heap, speeds up data heap grow by a bit 2009-10-31 21:06:34 -05:00
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
Slava Pestov 651a7fb6fa vm: replace generations array with individual instance variables referencing zone objects 2009-10-07 11:59:59 -05:00
Slava Pestov 3914b0264b vm: rename a few things 2009-10-07 08:40:28 -05:00
Slava Pestov 5c774d8c84 vm: more code cleanups 2009-10-07 08:33:54 -05:00
Slava Pestov 1f76a64e91 vm: more refactoring 2009-10-06 20:45:47 -05:00
Slava Pestov 6789a40fc6 vm: refactor forwarding pointer logic 2009-10-06 19:15:54 -05:00
Slava Pestov 93d49428fb vm: simplify some code 2009-10-06 08:55:42 -05:00
Slava Pestov 2311891910 vm: faster zone::contains_p() 2009-10-06 06:47:56 -05:00
Slava Pestov 8fcd6a3789 vm: simplify logic 2009-10-06 06:36:43 -05:00
Slava Pestov 697e2342d0 vm: put code block owner directly in the header, instead of as the first entry in the literal table. Reduces x86-64 image size by ~700kb, also eliminates separate 'strip' set of staging images from deploy tool 2009-10-06 06:25:07 -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 2ca0044dd0 vm: tweak 2009-10-06 04:57:44 -05:00
Slava Pestov ed1ee19ce1 vm: add a remembered set for code blocks which may reference young literals. Improves loading time 2009-10-06 04:36:34 -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 e2fcec6a99 Merge branch 'master' into new_gc 2009-10-06 01:31:50 -05:00
Slava Pestov 884ac79423 vm: minor tweaks which reduce image size by ~300kb 2009-10-06 01:31:39 -05:00
Slava Pestov 47c735d81d vm: more GC refactoring 2009-10-06 00:13:54 -05:00
Slava Pestov bae2240f62 vm: refactoring garbage collector 2009-10-05 22:16:08 -05:00
Slava Pestov 36c1fcdbe8 Merge branch 'for-slava' of git://git.rfc1149.net/factor 2009-10-05 18:29:31 -05:00
Slava Pestov b4e36608da compiler.cfg: remove _gc instruction, it doesn't need to exist, and change GC checks to ensure that the right amount of space is available instead of blindly checking for 1Kb 2009-10-05 05:27:49 -05:00
Slava Pestov 718cb8b579 vm: fix VM constructor 2009-10-05 04:31:35 -05:00
Slava Pestov 95655c26b4 vm: remove debug message 2009-10-05 03:28:36 -05:00
Slava Pestov 6c047127ee Change C++ exception usage back into a longjmp() due to GCC bugs 2009-10-05 03:27:28 -05:00
Doug Coleman 77860bc95d let's work with cygwin here..._ftelli64 -> ftello64 on cygwin. fine i guess 2009-10-04 06:10:57 -05:00
Doug Coleman 00efd780c9 Merge branch 'master' of git://factorcode.org/git/factor 2009-10-03 18:27:38 -05:00
Doug Coleman 11d55131de add ftell primitive 2009-10-03 18:20:35 -05:00
Samuel Tardieu 2bbad8d837 Remove two small memory leaks on Linux 2009-10-03 18:18:07 +02:00
Slava Pestov 24ba367ca0 vm.hpp: fix typo 2009-10-03 09:47:06 -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
Slava Pestov cfc8b06ac0 vm: cleanup in os-genunix.cpp 2009-10-02 20:36:19 -05:00
Joe Groff 435cd02200 keep a map of thread ids to vm pointers. use this to look up the correct VM to handle mach exceptions on os x 2009-10-02 12:03: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
Joe Groff b4ae77764c don't leak startargs in start_standalone_factor_in_new_thread 2009-10-02 11:11:17 -05:00
Slava Pestov 96df486753 vm: add assertions to tls_vm() 2009-10-02 09:37:04 -05:00
Slava Pestov 805fea33cb vm: fix register clobberage in PowerPC c_to_factor (untested) 2009-10-02 09:19:31 -05:00
Slava Pestov 512bf8befa vm: fix register clobberage in x86 c_to_factor 2009-10-02 09:12:09 -05:00
Slava Pestov d86ba27577 vm: fix compile error with DEBUG=1 2009-10-02 03:30:02 -05:00
Slava Pestov 2c136d6536 Merge branch 'reentrantvm' of git://github.com/phildawes/factor 2009-10-02 03:28:21 -05:00
Slava Pestov 913408c2a3 vm: fix stack alignment in primitive_inline_cache_miss 2009-10-02 03:25:18 -05:00
Phil Dawes ded33eda87 removed some superflous newlines 2009-10-01 07:33:16 +01:00