Commit Graph

167 Commits (ed8bbbef21430f6252a8a414c22f15b4f855568e)

Author SHA1 Message Date
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