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
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
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
34ce334317
Added data constructor to initialize bools in factorvmdata struct
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
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
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
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
6ddd3c654e
fixed up linux64 bootstrap (single threaded)
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
20ef4200fb
removed some error vm-> functions
2009-09-16 08:17:27 +01:00
Phil Dawes
7759b89de9
removed all vm-> singleton accesses from inlineimpls
2009-09-16 08:16:33 +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
Phil Dawes
43787e2664
moved stack_traces_p into the vm
2009-09-16 08:16:31 +01:00
Phil Dawes
5bb04857bf
moved cards_offset and decks_offset into vm struct (for x86)
2009-09-16 08:16:31 +01:00
Phil Dawes
c6d855d494
moved allot_markers_offset variable into vm struct
2009-09-16 08:16:31 +01:00
Phil Dawes
c010afc345
nursery global variable moved into vm
2009-09-16 08:16:31 +01:00
Phil Dawes
9a37b6abb6
moved stack_chain into vm struct
2009-09-16 08:16:31 +01:00
Phil Dawes
d48dffcfa0
moved os-windows-nt functions into the vm
2009-09-16 08:16:30 +01:00
Phil Dawes
01ecb11635
Dev checkpoint
2009-09-16 08:16:29 +01:00
Phil Dawes
7cebe088a1
moved some os-windows functions into the vm
2009-09-16 08:16:29 +01:00
Phil Dawes
aa58b54c2e
moved align_page into vm
2009-09-16 08:16:29 +01:00
Phil Dawes
7592a424e8
Dev checkpoint
2009-09-16 08:16:29 +01:00
Phil Dawes
75a3db3bfb
Fixed typo from upstream
2009-09-16 08:16:29 +01:00
Phil Dawes
32eace1a11
removed global functions from bignum.cpp
2009-09-16 08:16:27 +01:00
Phil Dawes
afe1cf0c73
removed some global functions from code_heap
2009-09-16 08:16:27 +01:00
Phil Dawes
39dc71e612
removed global functions from data_gc
2009-09-16 08:16:26 +01:00
Phil Dawes
7a20e1648c
Dev checkpoint
2009-09-16 08:16:26 +01:00
Phil Dawes
e08a6e21cb
split the moved inline stuff into separate header file
2009-09-16 08:16:26 +01:00
Phil Dawes
e4f92cdbf2
moved tagged.hpp templates to vm.hpp
2009-09-16 08:16:26 +01:00
Phil Dawes
75c81af691
moved more math.hpp inline functions to vm
2009-09-16 08:16:25 +01:00
Phil Dawes
d093ff766f
updated function ptr calls (iterators etc..) to take a vm parameter
2009-09-16 08:16:25 +01:00
Phil Dawes
d5da6a3d58
Dev checkpoint
2009-09-16 08:16:25 +01:00
Phil Dawes
8fa607e9a9
Dev checkpoint
2009-09-16 08:16:25 +01:00
Phil Dawes
efa974f025
moved global state from math into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
839491a828
moved global state from inline_cache into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
498b1917dc
moved global state from dispatch into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
c506abc6cd
moved global state from debug into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
396eeeba34
moved global state from code_heap into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
221c0ac5c8
moved global state from data_heap into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
3025cef1c6
moved global state from data_gc into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
80716a1b6e
moved global state from contexts and run into vm
...
Also renamed template type from T to TYPE to prevent clash with vm::T (true)
2009-09-16 08:16:24 +01:00
Phil Dawes
fb9f9ac3d3
moved callstack.hpp inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
9e23e41267
moved math.hpp inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
a249b484c4
moved byte_arrays.hpp inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
209755e2de
moved arrays.hpp inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
2e129dfc45
moved generic_arrays inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
4dabd186c9
moved data_gc and local_roots inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
31905b68a7
moved write_barrier inline function impls to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
a6c3c1e7d2
moved callstack.hpp functions to vm
2009-09-16 08:16:23 +01:00
Phil Dawes
ae5c0fbfb2
moved math.hpp functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
33ecaa5010
moved arrays.hpp functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
625380c25c
moved generic_array.hpp functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
b1189dc4f1
moved write_barrier functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
be3a9f7f66
moved data_gc templates and inline functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
1b64155998
moved reallot_array into vm
2009-09-16 08:16:22 +01:00
Phil Dawes
386dafe747
moved local roots state to vm, shuffled includes around
2009-09-16 08:16:21 +01:00
Phil Dawes
a826496a71
moved utilities.cpp functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
f88eaa0df3
moved factor.cpp functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
5980165829
moved inline_cache functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
c018372cd3
moved dispatch functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
2eca2ddeaf
moved quotations functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
28620619e9
moved alien functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
1bba717b36
moved image functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
ee07c0b4e5
moved code_heap functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
0097e76a82
moved code_block functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
fdabc9a5d8
moved code_gc functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
062c56f94b
moved io functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
10e5dc9b3c
moved math functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
552b9ecd81
Dev checkpoint
2009-09-16 08:16:20 +01:00
Phil Dawes
4f4c53c822
moved words functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
dbbc9bb2b1
added tuples fns to vm
2009-09-16 08:16:19 +01:00
Phil Dawes
fa46b90197
added byte_arrays fns to vm
2009-09-16 08:16:19 +01:00
Phil Dawes
25d0bb756f
added boolean fns to vm
2009-09-16 08:16:19 +01:00
Phil Dawes
0f2a89cfbd
moved strings fns to vm
2009-09-16 08:16:19 +01:00
Phil Dawes
72098c5f6a
moved arrays fns into vm
2009-09-16 08:16:19 +01:00
Phil Dawes
13e0ae6d97
moved debug functions into vm struct
2009-09-16 08:16:19 +01:00
Phil Dawes
64c2d81306
moved data_gc fns over to vm struct
2009-09-16 08:16:19 +01:00
Phil Dawes
9f6f7adaba
moved data_heap fns to vm struct
2009-09-16 08:16:19 +01:00
Phil Dawes
1a87f3bb5f
moved bignum functions to vm
2009-09-16 08:16:18 +01:00
Phil Dawes
a6fc19f4b0
Dev checkpoint
2009-09-16 08:16:18 +01:00
Phil Dawes
149af514e6
Dev checkpoint
2009-09-16 08:16:18 +01:00
Phil Dawes
8426e2f877
Dev checkpoint
2009-09-16 08:16:18 +01:00
Phil Dawes
10901e7c37
moved errors.cpp functions to vm
2009-09-16 08:16:18 +01:00
Phil Dawes
aa01f6b748
moved profiling fns into vm
2009-09-16 08:16:18 +01:00
Phil Dawes
110f925245
move functions from run.cpp into vm
2009-09-16 08:16:18 +01:00
Phil Dawes
88084a66ac
moved contexts functions into vm
2009-09-16 08:16:18 +01:00
Phil Dawes
caefc7aff9
Empty vm struct
2009-09-16 08:16:17 +01:00