Commit Graph

272 Commits (88a157acd18c89ad09ecea55556ea4f8e095f95e)

Author SHA1 Message Date
Slava Pestov daf47a539c 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 912b1265fc 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 8a25e8365a vm: Clean up more code duplication and rename a few methods 2009-12-02 01:17:30 -06:00
Slava Pestov 5533a43a86 vm: factor out common code between image loading and initial code block relocation 2009-12-02 00:54:16 -06:00
Slava Pestov ca7bca6738 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 8d41693ee3 vm: growing heap no longer uses relocate_code_block() 2009-11-28 19:48:26 -06:00
Slava Pestov 3d335474fe vm: new image relocation that doesn't use literal table 2009-11-27 17:05:08 -06:00
Slava Pestov 0ac2a92d56 vm: new implementation of modify-code-heap that doesn't use literal tables 2009-11-25 17:20:48 -06:00
Slava Pestov 19835ab32e 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 0521890f97 vm: flush icache after GC 2009-11-24 21:36:35 -06:00
Slava Pestov 3789e75e0c vm: compaction now updates the needs_fixup set 2009-11-24 19:29:59 -06:00
Slava Pestov bfa5340ea8 vm: mark sweep now traces code block references; rename embedded_pointer to instruction_operand 2009-11-23 19:17:12 -06:00
Slava Pestov e66b8673f4 vm: minor GC traces embedded pointers 2009-11-22 13:37:39 -06:00
Slava Pestov 272deedefe Fix conflict 2009-11-22 02:12:44 -06:00
Doug Coleman 26a9852b8c fix windows compile error 2009-11-20 04:21:21 -06:00
Doug Coleman a896eef7b4 remove sleep_micros, add sleeo_nanos to vm 2009-11-19 04:49:29 -06:00
Doug Coleman addb1c90bb rename millis to system-millis, micros to system-micros, add nano-count 2009-11-18 15:58:48 -06:00
Doug Coleman 1861dd2705 initial commit to nanos branch to replace micros 2009-11-18 04:20:05 -06:00
Doug Coleman 3323072613 Merge branch 'master' into startup
Conflicts:
	core/bootstrap/primitives.factor
	vm/run.hpp
2009-11-15 02:52:50 -06:00
Slava Pestov eb165a5450 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 06fb247b8c Invalidate inline caches used by call( and execute( when words are redefined 2009-11-12 16:09:07 -06:00
Slava Pestov 585a1a7fbe 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 21c165190c 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 68f3087c1c Faster identity-hashcode primitive; fast path now opencoded by the compiler 2009-11-11 02:27:19 -06:00
Slava Pestov 4168ffbcee New identity-hashcode primitive 2009-11-10 21:18:54 -06:00
Slava Pestov c434201b33 vm: eliminating literal table work in progress 2009-11-07 16:16:09 -06:00
Slava Pestov 2f8ba13da0 vm: faster data_root and <array> primitive 2009-11-06 05:30:37 -06:00
Slava Pestov 7c0c2fec47 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 065dac3736 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 fa50753d40 vm: remove some dead code 2009-11-05 19:32:26 -06:00
Slava Pestov 9ae5faa14e vm: rewrite 'become' primitive so that it uses a slot visitor instead of GC 2009-11-05 19:03:51 -06:00
Slava Pestov 40a82aba19 tools.time: overhaul 2009-11-05 01:07:59 -06:00
Slava Pestov f2bf46e516 vm: fix issue with unnecessary heap growth 2009-11-03 22:25:22 -06:00
Slava Pestov b341527428 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 d65296b334 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 f68319fef3 vm: more sweep phase optimizations 2009-11-01 04:40:15 -06:00
Slava Pestov c7430d74c2 vm: remove promotion strategy, clean up compaction code 2009-11-01 03:47:09 -06:00
Slava Pestov 99e3b9c59c 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 761978b662 Merge optimizations from master branch 2009-10-31 03:02:19 -05:00
Slava Pestov 984a8e6adf vm: faster tuple allocation primitives 2009-10-31 02:58:00 -05:00
Slava Pestov 2d0a36804f 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 e2beabf2be 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 503137b1b9 vm: clean up gc events, remove -verbosegc switch, fix compaction bug 2009-10-27 21:31:28 -05:00
Slava Pestov 61c2ff4fff 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 74ecd90cd6 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 d574aeb70a vm: make compaction its own gc_op 2009-10-25 14:02:14 -05:00
Slava Pestov b064946b11 vm: debugging compaction 2009-10-25 08:07:21 -05:00
Slava Pestov 7142274aef vm: combine heap_block and code_block structs, eliminates some boilerplate 2009-10-24 21:33:31 -05:00
Slava Pestov 7a1f2b2d4b vm: clean up code heap visitor 2009-10-24 04:36:29 -05:00
Slava Pestov 38df6426de vm: move binary_payload_start() method from factor_vm to object class 2009-10-24 04:27:45 -05:00
Slava Pestov 60f3cb669a vm: data heap compaction work in progress 2009-10-24 04:18:33 -05:00
Slava Pestov eefcc0fb8c 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 6c561b5c4c vm: rename userenv to special_objects 2009-10-23 00:33:53 -05:00
Slava Pestov b78202e816 Merge branch 'master' into new_gc 2009-10-22 05:40:57 -05:00
Slava Pestov 28de799296 vm: fix compilation 2009-10-22 06:38:02 -04:00
Slava Pestov 5a63edf278 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
Slava Pestov e51882c555 vm: debugging mark and sweep 2009-10-21 23:24:35 -05:00
Slava Pestov 6ee56ca93a vm: use iostreams instead of printf for debug messages, clean up a few things 2009-10-21 20:12:57 -05:00
Slava Pestov a03a817bdb vm: mark sweep gc for tenured space work in progress 2009-10-20 22:20:49 -05:00
Slava Pestov 056ccc6741 vm: split off free_list_allocator from heap class, rename zone to bump_allocator 2009-10-20 15:26:11 -05:00
Slava Pestov 1f97169c62 vm: move factor_vm::untagged_object_size() to object::size() 2009-10-20 13:13:39 -05:00
Slava Pestov f442d1949b Change data heap alignment to 16 bytes 2009-10-20 12:45:00 -05:00
Slava Pestov fad52e8420 vm: fix crash when converting a callstack to an array 2009-10-20 12:19:02 -05:00
Slava Pestov f9fc3487c6 vm: change code heap layout somewhat, remove unused allocation bitmap from mark_bits 2009-10-20 09:37:24 -05:00
Doug Coleman 9d4d27dd0f Merge branch 'master' into startup 2009-10-20 00:31:45 -04:00
Doug Coleman ccdb11419f 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 e68b570e2b 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 5e12356a22 vm: new mark_bits data structure replaces hashtable when compacting code heap 2009-10-19 02:21:11 -05:00
Slava Pestov be96d985e9 vm: working on new compaction implementation 2009-10-19 00:07:43 -05:00
Slava Pestov a977ade0af vm: fix conflict in image.cpp 2009-10-18 20:54:13 -05:00
Slava Pestov f0a1a3ce5b vm: rename F to false_object, and rename T to true_object 2009-10-18 20:26:21 -05:00
Slava Pestov 40b5c2c732 vm: code heap: move mark bits to a separate bitmap 2009-10-16 14:41:40 -05:00
Slava Pestov 15a9494d2c vm: fix compile errors on some gcc versions 2009-10-16 12:13:43 -05:00
Slava Pestov 030d035e94 vm: code heap compaction at runtime using compact-gc primitive 2009-10-16 11:39:35 -05:00
Slava Pestov 7c126be62b 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 786f6826b6 Merge branch 'reentrantvm' of git://github.com/phildawes/factor 2009-10-16 03:52:35 -05:00
Slava Pestov bd20a52580 vm: make the code nice and pretty 2009-10-16 02:55:02 -05:00
Slava Pestov 78f3f0e90d vm: don't flush instruction cache twice per code block on a major GC on PowerPC 2009-10-15 22:31:41 -05:00
Doug Coleman a11a8c0a93 fix compiler warnings in vm 2009-10-15 21:37:53 -05:00
Slava Pestov 5027527287 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
Phil Dawes 0b2db4018a Removed VM_PTR macros. All builds reentrant by default 2009-10-14 19:14:57 +01:00
Slava Pestov 0455711727 vm: faster write barrier for non-optimized code 2009-10-14 06:13:51 -05:00
Slava Pestov 10ad5cad53 Working on adding support for the new write barrier to optimized code 2009-10-14 02:06:01 -05:00
Slava Pestov 1ee53d04a9 vm: new card marking implementation supports marking partial objects 2009-10-13 21:16:04 -05:00
Slava Pestov a13ffad800 vm: build fix 2009-10-09 05:12:28 -05:00
Slava Pestov 44c78493bf vm: misc cleanups 2009-10-09 03:20:50 -05:00
Slava Pestov b2cae0b6d8 vm: more efficient code heap remembered set 2009-10-08 23:10:32 -05:00
Slava Pestov 6582cba945 vm: split off parts of data_gc into sub-files and clean up logic 2009-10-08 02:10:28 -05:00
Slava Pestov b9f386c693 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 bc691eb198 vm: replace generations array with individual instance variables referencing zone objects 2009-10-07 11:59:59 -05:00
Slava Pestov 2c527982fe vm: rename a few things 2009-10-07 08:40:28 -05:00
Slava Pestov 8ffd538d27 vm: more code cleanups 2009-10-07 08:33:54 -05:00
Slava Pestov eaf1afb156 vm: more refactoring 2009-10-06 20:45:47 -05:00
Slava Pestov 40fd28e0a3 vm: refactor forwarding pointer logic 2009-10-06 19:15:54 -05:00
Slava Pestov 8109e7376c vm: simplify some code 2009-10-06 08:55:42 -05:00
Slava Pestov 4d0ec09d9c 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 fa2ee8ee7a vm: free up a cell in compiled code block headers 2009-10-06 05:52:45 -05:00
Slava Pestov 326952e919 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 1bfa4ef5ca vm: cleanup 2009-10-06 01:42:17 -05:00
Slava Pestov 9ccec33321 vm: more GC refactoring 2009-10-06 00:13:54 -05:00