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
Phil Dawes
70f25c71b9
calls dispatched as per multithreaded, but checked against singleton
2009-09-30 21:25:50 +01:00
Phil Dawes
65bcd86c10
ppc asm to pass vm pointer: inline_cache_miss, set_callstack
2009-09-30 19:43:36 +01:00
Phil Dawes
a73e6f20d4
ppc asm to pass vm pointer: overflow fns
2009-09-30 07:59:36 +01:00
Phil Dawes
6fa0a93498
ppc asm to pass vm pointer: initial bootstrap
2009-09-28 07:48:37 +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
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
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
U-SLAVA-DFB8FF805\Slava
57b98e2c55
vm: fix compilation on Windows
2009-09-26 02:56:55 -05:00
Slava Pestov
6578bd0533
vm: fix windows compilation (untested)
2009-09-26 02:41:01 -05:00
Slava Pestov
fa598be667
Fix GC root safety in word-xt primitive
2009-09-25 21:42:21 -05:00
Slava Pestov
f846afd661
vm: remove safe_malloc now that everything uses constructors instead
2009-09-25 21:22:05 -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
Slava Pestov
d017a53227
Merge branch 'vm_cleanup' of git://github.com/phildawes/factor
2009-09-25 19:04:19 -05:00
Slava Pestov
11d716e8f7
Merge branch 'master' of git://factorcode.org/git/factor
2009-09-25 18:23:36 -05:00
Slava Pestov
b14c683b32
vm: ignore 'declare' calls in non-optimizing compiler
2009-09-25 18:08:21 -05:00
Slava Pestov
602776c885
vm: clean up os-unix.cpp
2009-09-25 18:08:00 -05:00
Phil Dawes
6b7717bf37
forwarding functions replaced with PRIMITIVE_FORWARD() macro
2009-09-25 20:43:01 +01:00
Phil Dawes
e26bbbe9a0
removed VM_ASM_API_OVERFLOW (VM_ASM_API now regparm(3))
2009-09-25 20:33:38 +01:00
Phil Dawes
4552e02624
made inline_gc a VM_C_API function
2009-09-25 18:29:07 +01:00
Phil Dawes
f5c70d4ad7
make inline_gc regparm(3) and cleaned up %call-gc stack alignment
2009-09-24 21:45:56 +01:00
Phil Dawes
8173ef4710
fix c_to_factor stack alignment
2009-09-24 20:18:42 +01:00
Phil Dawes
6bb647d308
fix lazy_jit_compile to not abuse stack on x86.32
2009-09-24 19:59:37 +01:00
Slava Pestov
67a8bb7370
vm/cpu-x86.32.S: formatting fix
2009-09-24 06:25:01 -05:00
Slava Pestov
cb497f009b
Merge branch 'vm_cleanup' of git://github.com/phildawes/factor
2009-09-24 04:31:55 -05:00
Slava Pestov
576e725662
vm: Fix potential crash in <word> primitive if profiling is enabled
2009-09-24 04:31:11 -05:00
Phil Dawes
57840562f5
renamed myvm member variable to parent_vm
2009-09-24 08:16:57 +01:00
Phil Dawes
83b0769eef
renamed factorvm to factor_vm
2009-09-24 08:16:52 +01:00
Phil Dawes
3b8292db8e
bignum indentation and macro cleanup
2009-09-24 08:02:14 +01:00
Phil Dawes
35b2657f53
bignum indentation cleanup
2009-09-24 08:02:14 +01:00
Phil Dawes
e566656e46
removed a bunch of superflous blank lines
2009-09-24 08:02:14 +01:00
Phil Dawes
46bab62689
misc cleanup
2009-09-24 08:02:14 +01:00
Phil Dawes
d25fe552ab
removed superflous whitspace lines
2009-09-24 08:02:14 +01:00
Phil Dawes
e3ac531fdb
renamed vmprim_ to primitive_
2009-09-24 08:02:13 +01:00
Slava Pestov
9d90bdd439
Fix conflict
2009-09-20 23:18:07 -05:00
Slava Pestov
ea44ea3522
math.vectors.simd: add saturated arithmetic operations
2009-09-20 23:16:02 -05: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
Phil Dawes
8049b441c2
imul clobbers arg2 on x86.64, so stashing vm ptr on the stack
2009-09-16 08:22:18 +01:00
Phil Dawes
a8d1e5187d
Added -DREENTRANT option to Makefile
...
Also renamed FACTOR_MULTITHREADED to FACTOR_REENTRANT
2009-09-16 08:22:18 +01:00
Phil Dawes
617a7cbd65
Added more init code to vm constructor.
...
Also removed dummy variables file as have fixed that problem now
2009-09-16 08:22:18 +01:00
Phil Dawes
c7b7517f36
small x86 asm cleanup
2009-09-16 08:22:17 +01:00
Phil Dawes
8a65f35c31
vm passed in primitives as arg0 for x86.64
2009-09-16 08:22:17 +01:00
Phil Dawes
480a15c2c3
Added vm passing to inline_cache_miss x86.32 asm
2009-09-16 08:22:17 +01:00
Phil Dawes
3343723ee3
Don't return functions returning void. -O3 seems to optimize them out!
2009-09-16 08:22:17 +01:00
Phil Dawes
deb7af70bb
asm math functions pass vm ptr to overflow function in 3rd arg (X86.32)
2009-09-16 08:22:17 +01:00
Phil Dawes
3ecff2c0eb
fixed bug where vm_char being treated as 1byte type
2009-09-16 08:22:17 +01:00
Phil Dawes
34ce334317
Added data constructor to initialize bools in factorvmdata struct
2009-09-16 08:22:17 +01:00
Phil Dawes
67ac514a3b
Added vm ptr to math overflow functions
2009-09-16 08:22:17 +01:00
Phil Dawes
b02944c6d5
moved signal handlers into vm object
2009-09-16 08:22:16 +01:00
Phil Dawes
eee1de23c8
removed debugging
2009-09-16 08:22:16 +01:00
Phil Dawes
e8d1612e8e
Split data out into separate vm-data struct
2009-09-16 08:22:16 +01:00
Phil Dawes
b07550620f
Dev checkpoint
2009-09-16 08:20:51 +01:00
Phil Dawes
9bf6f97e35
Switched on singleton flag
2009-09-16 08:20:51 +01:00
Phil Dawes
9e460f6dec
removed vm ptr from mach_signal and some other places
2009-09-16 08:20:51 +01:00
Phil Dawes
544bc3cd33
removed vm ptr from os-macosx.mm
2009-09-16 08:20:51 +01:00
Phil Dawes
e49fa4109d
added FACTOR_MULTITHREADED_TLS option
2009-09-16 08:20:51 +01:00
Phil Dawes
f4af39b60e
thread_id is a pthread_t on unix
2009-09-16 08:20:51 +01:00
Phil Dawes
b1c68d92b7
added threadsafe defines. Dunno if they do much
2009-09-16 08:20:51 +01:00
Phil Dawes
3a3154797c
fixed stupid signal handler bug
2009-09-16 08:20:50 +01:00
Phil Dawes
2e50da6beb
added vm-ptr primitive
2009-09-16 08:20:50 +01:00
Phil Dawes
3345922330
quick test vocab for mt stuff
2009-09-16 08:20:50 +01:00
Phil Dawes
ca16daa4b2
cleaned up code a bit, added multithreaded mode flags
2009-09-16 08:20:50 +01:00
Phil Dawes
fa6d8d239b
removed vm singleton usage from unix stuff
2009-09-16 08:20:49 +01:00
Phil Dawes
3c139593c5
moved the thread stuff around a bit
2009-09-16 08:20:49 +01:00
Phil Dawes
1456fb3c97
removed vm ptrs from unix code (still in signal handlers tho)
2009-09-16 08:20:10 +01:00
Phil Dawes
784b8d16ae
moved utility functions and fatal_error out of vm struct since doesn't need state
2009-09-16 08:20:10 +01:00
Phil Dawes
b02c602a89
added vm passing to some alien/boxing functions and added some vm asserts
2009-09-16 08:20:10 +01:00
Phil Dawes
5cd2fbb564
vm ptr passed to lazy_jit_compile on x86.64
2009-09-16 08:20:10 +01:00
Phil Dawes
334f4c3455
overflow functions now retrieving their vm ptr from above ds stack
2009-09-16 08:20:09 +01:00
Phil Dawes
be1b079eb5
Primitives now pass vm ptr on 64bit x86
2009-09-16 08:20:09 +01:00
Phil Dawes
6ddd3c654e
fixed up linux64 bootstrap (single threaded)
2009-09-16 08:20:09 +01:00
Phil Dawes
aa005c948f
win32 main starts factorvm in new thread
2009-09-16 08:20:09 +01:00
Phil Dawes
5c2a28173a
Start windows factor in a spawned thread (for testing)
2009-09-16 08:20:09 +01:00
Phil Dawes
9cac5e8aa9
added lookup_vm and removed last usage of vm from windows code
2009-09-16 08:20:09 +01:00
Phil Dawes
12ca7bdc57
added factorvm ptrs to the rest of alien functions.
...
(Left commented debug lines to remind me that these haven't been tested yet, and some are osx specific)
2009-09-16 08:17:27 +01:00
Phil Dawes
e98f168a11
print_native_string doesn't need singleton ptr
2009-09-16 08:17:27 +01:00
Phil Dawes
e05f91f3a8
cleaning up stray vm singleton usage
2009-09-16 08:17:27 +01:00
Phil Dawes
e2d246f371
removed most global functions from factor.cpp
2009-09-16 08:17:27 +01:00
Phil Dawes
20ef4200fb
removed some error vm-> functions
2009-09-16 08:17:27 +01:00
Phil Dawes
700e03a6a6
removed some vm-> forwarding functions
2009-09-16 08:17:26 +01:00
Phil Dawes
2f3cd4d23d
removed some vm-> pointers
2009-09-16 08:17:26 +01:00
Phil Dawes
005549ba43
vm pointer passed to nest_stacks and unnest_stacks (win32)
2009-09-16 08:17:26 +01:00
Phil Dawes
cdb6304fef
Dev checkpoint
2009-09-16 08:17:26 +01:00
Phil Dawes
58190c06dc
passing ptr in boolean boxing and save_callstack_bottom
2009-09-16 08:17:26 +01:00
Phil Dawes
0a15e20e12
Added basic win32 start-thread support
2009-09-16 08:17:26 +01:00
Phil Dawes
fa2dccd6d3
vm passed in box_alien and alien_offset (win32)
2009-09-16 08:16:33 +01:00
Phil Dawes
7759b89de9
removed all vm-> singleton accesses from inlineimpls
2009-09-16 08:16:33 +01:00
Phil Dawes
a39bf2f8e2
converted box_* float functions to use vm (x86 win32)
2009-09-16 08:16:33 +01:00
Phil Dawes
81106f9e20
converted box_* integer functions to use vm (x86 windows)
2009-09-16 08:16:33 +01:00
Phil Dawes
199fba7a99
converted box_* integer functions to use vm (x86 windows)
2009-09-16 08:16:33 +01:00
Phil Dawes
ff54a57eb3
added code to pass vm ptr to some unboxers
2009-09-16 08:16:32 +01:00
Phil Dawes
c5119218c5
moved gc_locals accessors into vm
2009-09-16 08:16:32 +01:00
Phil Dawes
65a264aa1f
turned errno() methods back into functions since they should already be thread safe
2009-09-16 08:16:32 +01:00
Phil Dawes
ff8f2b10ec
fixed up getenv compiler intrinsic to use vm struct userenv
2009-09-16 08:16:32 +01:00
Phil Dawes
3b3ed501c7
added padding to align userenv to an 8byte boundary
2009-09-16 08:16:32 +01:00
Phil Dawes
ef16c4be66
moved userenv into vm in C code (DOESNT BOOTSTRAP YET!!!)
2009-09-16 08:16:32 +01:00