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
57c541ea46
vm: eliminating literal table work in progress
2009-11-07 16:16:09 -06:00
Slava Pestov
11075828e5
vm: faster data_root and <array> primitive
2009-11-06 05:30:37 -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
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
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
e1c365e69a
vm: fix issue with unnecessary heap growth
2009-11-03 22:25:22 -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
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
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
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
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
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
b7181d14a8
vm: debugging compaction
2009-10-25 08:07:21 -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
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
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
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
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
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
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
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
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
236588208b
vm: rename F to false_object, and rename T to true_object
2009-10-18 20:26:21 -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
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
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
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
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
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
ab9b462411
vm: build fix
2009-10-09 05:12:28 -05:00
Slava Pestov
95722adebc
vm: misc cleanups
2009-10-09 03:20:50 -05:00
Slava Pestov
21f55ab1a3
vm: more efficient code heap remembered set
2009-10-08 23:10:32 -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
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
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
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
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
6c047127ee
Change C++ exception usage back into a longjmp() due to GCC bugs
2009-10-05 03:27:28 -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
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
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
Phil Dawes
70f25c71b9
calls dispatched as per multithreaded, but checked against singleton
2009-09-30 21:25:50 +01:00
Phil Dawes
3a88d8c49e
inlineimpl.hpp is toast
2009-09-29 19:53:10 +01:00
Phil Dawes
b6718641dc
Converted some callback fns to use member-fn pointers
2009-09-28 19:45:10 +01:00
Phil Dawes
791d654f92
moved local_roots and write_barrier stuff out of inlineimpls.hpp
2009-09-28 19:02:51 +01:00
Phil Dawes
dbc1411a6a
removed vm-data.hpp
2009-09-27 20:09:09 +01:00
Phil Dawes
9b7412b8f8
Moved PRIMITIVE and PRIMITIVE_FORWARDs to primitives.[ch]pp
2009-09-27 19:42:18 +01:00
Slava Pestov
ab8c6e9978
Word hashcodes are now computed from the word's name/vocabulary, removing a source of non-determinism
2009-09-27 21:09:11 -05:00
Slava Pestov
6578bd0533
vm: fix windows compilation (untested)
2009-09-26 02:41:01 -05:00
Slava Pestov
f81c8549f4
Make segment, context, data_heap, zone more object-oriented, and fix crash when calling undefined symbols
2009-09-25 21:17:20 -05:00
Slava Pestov
c046ff4b23
vm: make heap data-type object-oriented
2009-09-25 20:32:00 -05:00
Phil Dawes
83b0769eef
renamed factorvm to factor_vm
2009-09-24 08:16:52 +01:00
Phil Dawes
e566656e46
removed a bunch of superflous blank lines
2009-09-24 08:02:14 +01:00
Phil Dawes
e3ac531fdb
renamed vmprim_ to primitive_
2009-09-24 08:02:13 +01:00
Phil Dawes
d2afb4b344
put mach call_fault_handler in the vm
2009-09-16 08:22:18 +01:00
Phil Dawes
2cf2dab48e
fpe signals working on unix again
2009-09-16 08:22:18 +01:00