Slava Pestov
3887292543
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
8edde0ffeb
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
a45ccd1a72
calls dispatched as per multithreaded, but checked against singleton
2009-09-30 21:25:50 +01:00
Phil Dawes
a514f79d3c
inlineimpl.hpp is toast
2009-09-29 19:53:10 +01:00
Phil Dawes
0ca2b9b3b2
Converted some callback fns to use member-fn pointers
2009-09-28 19:45:10 +01:00
Phil Dawes
49df5b1078
moved local_roots and write_barrier stuff out of inlineimpls.hpp
2009-09-28 19:02:51 +01:00
Phil Dawes
132628985c
removed vm-data.hpp
2009-09-27 20:09:09 +01:00
Phil Dawes
63266524d7
Moved PRIMITIVE and PRIMITIVE_FORWARDs to primitives.[ch]pp
2009-09-27 19:42:18 +01:00
Slava Pestov
3024810dfa
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
3c38656fd2
vm: fix windows compilation (untested)
2009-09-26 02:41:01 -05:00
Slava Pestov
3d196110b7
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
5195fdaeaa
vm: make heap data-type object-oriented
2009-09-25 20:32:00 -05:00
Phil Dawes
1c5329cc2e
renamed factorvm to factor_vm
2009-09-24 08:16:52 +01:00
Phil Dawes
2cfb1b6f02
removed a bunch of superflous blank lines
2009-09-24 08:02:14 +01:00
Phil Dawes
3da9b64c73
renamed vmprim_ to primitive_
2009-09-24 08:02:13 +01:00
Phil Dawes
8662e9e9e4
put mach call_fault_handler in the vm
2009-09-16 08:22:18 +01:00
Phil Dawes
82f0c90719
fpe signals working on unix again
2009-09-16 08:22:18 +01:00
Phil Dawes
3db680547a
Added -DREENTRANT option to Makefile
...
Also renamed FACTOR_MULTITHREADED to FACTOR_REENTRANT
2009-09-16 08:22:18 +01:00
Phil Dawes
57ffdae57f
asm math functions pass vm ptr to overflow function in 3rd arg (X86.32)
2009-09-16 08:22:17 +01:00
Phil Dawes
897288123b
Added data constructor to initialize bools in factorvmdata struct
2009-09-16 08:22:17 +01:00
Phil Dawes
442f6ef3f1
moved signal handlers into vm object
2009-09-16 08:22:16 +01:00
Phil Dawes
c1212b1326
Split data out into separate vm-data struct
2009-09-16 08:22:16 +01:00
Phil Dawes
a89a0826ee
Dev checkpoint
2009-09-16 08:20:51 +01:00
Phil Dawes
277186ea62
Switched on singleton flag
2009-09-16 08:20:51 +01:00
Phil Dawes
1f4abd57b8
added FACTOR_MULTITHREADED_TLS option
2009-09-16 08:20:51 +01:00
Phil Dawes
a8f233c055
thread_id is a pthread_t on unix
2009-09-16 08:20:51 +01:00
Phil Dawes
c623658aa2
added vm-ptr primitive
2009-09-16 08:20:50 +01:00
Phil Dawes
898f5be1e0
quick test vocab for mt stuff
2009-09-16 08:20:50 +01:00
Phil Dawes
05d17492ed
cleaned up code a bit, added multithreaded mode flags
2009-09-16 08:20:50 +01:00
Phil Dawes
9b013faed4
removed vm singleton usage from unix stuff
2009-09-16 08:20:49 +01:00
Phil Dawes
1e93c766a1
moved the thread stuff around a bit
2009-09-16 08:20:49 +01:00
Phil Dawes
f371bbbc2d
removed vm ptrs from unix code (still in signal handlers tho)
2009-09-16 08:20:10 +01:00
Phil Dawes
f60b1e1dd0
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
939426dcf5
fixed up linux64 bootstrap (single threaded)
2009-09-16 08:20:09 +01:00
Phil Dawes
41345583a5
added lookup_vm and removed last usage of vm from windows code
2009-09-16 08:20:09 +01:00
Phil Dawes
38eb7a23f1
removed some error vm-> functions
2009-09-16 08:17:27 +01:00
Phil Dawes
4d6294693d
removed all vm-> singleton accesses from inlineimpls
2009-09-16 08:16:33 +01:00
Phil Dawes
cefc0f7e08
moved gc_locals accessors into vm
2009-09-16 08:16:32 +01:00
Phil Dawes
c0eefe9ed3
turned errno() methods back into functions since they should already be thread safe
2009-09-16 08:16:32 +01:00
Phil Dawes
2a1a4ccf27
fixed up getenv compiler intrinsic to use vm struct userenv
2009-09-16 08:16:32 +01:00
Phil Dawes
4d98fe0157
added padding to align userenv to an 8byte boundary
2009-09-16 08:16:32 +01:00
Phil Dawes
48d385e5d9
moved userenv into vm in C code (DOESNT BOOTSTRAP YET!!!)
2009-09-16 08:16:32 +01:00
Phil Dawes
7de311c0da
moved stack_traces_p into the vm
2009-09-16 08:16:31 +01:00
Phil Dawes
cb3df86491
moved cards_offset and decks_offset into vm struct (for x86)
2009-09-16 08:16:31 +01:00
Phil Dawes
74e99cb6fb
moved allot_markers_offset variable into vm struct
2009-09-16 08:16:31 +01:00
Phil Dawes
fd72e140d2
nursery global variable moved into vm
2009-09-16 08:16:31 +01:00
Phil Dawes
f9f1031dd8
moved stack_chain into vm struct
2009-09-16 08:16:31 +01:00
Phil Dawes
c290eb67ab
moved os-windows-nt functions into the vm
2009-09-16 08:16:30 +01:00
Phil Dawes
9ec000c570
Dev checkpoint
2009-09-16 08:16:29 +01:00
Phil Dawes
1431ae806f
moved some os-windows functions into the vm
2009-09-16 08:16:29 +01:00
Phil Dawes
3fef06d21d
moved align_page into vm
2009-09-16 08:16:29 +01:00
Phil Dawes
fa34bc858c
Dev checkpoint
2009-09-16 08:16:29 +01:00
Phil Dawes
5f7e6801b0
Fixed typo from upstream
2009-09-16 08:16:29 +01:00
Phil Dawes
caef18de95
removed global functions from bignum.cpp
2009-09-16 08:16:27 +01:00
Phil Dawes
4f273e2020
removed some global functions from code_heap
2009-09-16 08:16:27 +01:00
Phil Dawes
04094f3b64
removed global functions from data_gc
2009-09-16 08:16:26 +01:00
Phil Dawes
fc9558d954
Dev checkpoint
2009-09-16 08:16:26 +01:00
Phil Dawes
9e4b483993
split the moved inline stuff into separate header file
2009-09-16 08:16:26 +01:00
Phil Dawes
5600f969b4
moved tagged.hpp templates to vm.hpp
2009-09-16 08:16:26 +01:00
Phil Dawes
1c02e9eda0
moved more math.hpp inline functions to vm
2009-09-16 08:16:25 +01:00
Phil Dawes
e80c9f90d6
updated function ptr calls (iterators etc..) to take a vm parameter
2009-09-16 08:16:25 +01:00
Phil Dawes
03ecc58bbf
Dev checkpoint
2009-09-16 08:16:25 +01:00
Phil Dawes
50875c77f3
Dev checkpoint
2009-09-16 08:16:25 +01:00
Phil Dawes
6c566717ba
moved global state from math into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
4188b0fde3
moved global state from inline_cache into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
77db2b7821
moved global state from dispatch into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
d9e354654a
moved global state from debug into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
7852a5efad
moved global state from code_heap into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
67a7e3ebf7
moved global state from data_heap into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
e974809337
moved global state from data_gc into vm
2009-09-16 08:16:24 +01:00
Phil Dawes
4ff57d8acf
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
31377b7ae4
moved callstack.hpp inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
2bf80c0bf6
moved math.hpp inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
f2cb6e6f6f
moved byte_arrays.hpp inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
5a9ff7fba9
moved arrays.hpp inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
4ba0f01c0a
moved generic_arrays inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
6d1ee34188
moved data_gc and local_roots inline functions to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
5c89a644c5
moved write_barrier inline function impls to vm.hpp
2009-09-16 08:16:23 +01:00
Phil Dawes
09f063d6fc
moved callstack.hpp functions to vm
2009-09-16 08:16:23 +01:00
Phil Dawes
f3e67817cc
moved math.hpp functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
7d097b387c
moved arrays.hpp functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
83a73b9083
moved generic_array.hpp functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
cdc7250d90
moved write_barrier functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
95363d7744
moved data_gc templates and inline functions to vm
2009-09-16 08:16:22 +01:00
Phil Dawes
05f4fcbf1c
moved reallot_array into vm
2009-09-16 08:16:22 +01:00
Phil Dawes
16c3591d11
moved local roots state to vm, shuffled includes around
2009-09-16 08:16:21 +01:00
Phil Dawes
eefa976e6f
moved utilities.cpp functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
b38191ae0e
moved factor.cpp functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
502f97dc69
moved inline_cache functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
35a62b0453
moved dispatch functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
fd374222bf
moved quotations functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
9ffb1e34a6
moved alien functions to vm
2009-09-16 08:16:21 +01:00
Phil Dawes
5c261e4590
moved image functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
d02dcfd8f2
moved code_heap functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
5f66fd18e9
moved code_block functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
21b7856402
moved code_gc functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
e8cab52116
moved io functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
eea9b4bdb4
moved math functions to vm
2009-09-16 08:16:20 +01:00
Phil Dawes
af1aa44a1a
Dev checkpoint
2009-09-16 08:16:20 +01:00
Phil Dawes
2ffcd683e1
moved words functions to vm
2009-09-16 08:16:20 +01:00