Commit Graph

311 Commits (bb2df7da6bc3a935738fc464baf12a0fd01562ac)

Author SHA1 Message Date
Slava Pestov 5d7287b71d compiler: simplify ##unbox-small/large-struct by emitting an ##unbox-any-c-ptr first 2010-05-10 01:38:34 -04:00
Slava Pestov fc7a1ad8b3 New GC checks work in progress 2010-05-03 17:34:16 -04:00
Slava Pestov fd84bb98bc strings: move string-nth primitive out of the VM and into the library 2010-05-03 17:34:12 -04:00
Doug Coleman c78628fbe9 Add callstack-bounds primitive to vm/ for use with javascriptcore library 2010-04-19 20:08:15 -05:00
Slava Pestov 775dbefdbc math.parser: expose a format-float primitive for use by formatting vocabulary 2010-04-13 21:21:28 -07:00
Slava Pestov cdc4fb3b62 Get green threads working on Windows
- store stack base and limit in TIB
- set up a frame-based structured exception handler in each context's callstack
- boot.x86.32.image has now been replaced by boot.winnt-x86.32.image and boot.unix-x86.32.image
2010-04-03 20:24:33 -04:00
Slava Pestov 47f86898d7 vm: pre-allocate context alien 2010-04-02 00:02:21 -04:00
Slava Pestov de0c2801d2 threads: delete old contexts immediately instead of handing them off to a 'context recycler' thread 2010-03-30 21:47:48 -04:00
Slava Pestov cea2bf4189 threads: use context-switching primitives 2010-03-29 20:40:17 -04:00
Slava Pestov a1caf9edb3 vm: split up TLS code and add a dummy implementation for a dummy OS known as NetBSD 2010-03-29 02:23:21 -04:00
Slava Pestov 0fa2277bc3 vm: use sigaltstack to handle callstack overflow properly 2010-03-28 11:37:28 -04:00
Slava Pestov 370718e9a4 vm: signal handling cleanup 2010-03-27 07:33:28 -04:00
Slava Pestov f8134b18cd Implement start-context and set-context primitives 2010-03-27 02:56:11 -04:00
Slava Pestov adeb6fb68f vm: actually use context callstacks when running code 2010-03-26 22:44:43 -04:00
Slava Pestov af573bd022 Add context-specific special object table, generalizing catchstack_save and current_callback_save fields of context struct 2010-03-18 22:06:00 +13:00
Slava Pestov 18ed2d8c69 vm: nuke unused (string>float) primitive 2010-02-08 08:16:56 +13:00
Doug Coleman 8c492088a2 Fix spaces that crept into vm/ cpp files 2010-02-06 01:06:26 -06:00
Doug Coleman dad0599fbe reorder functions in header file 2010-02-04 23:55:17 -06:00
Doug Coleman 813928dd40 Refactor error handling in io.cpp. Update image.cpp and header files for changes. 2010-02-04 23:53:54 -06:00
Doug Coleman f6002e6c78 Change the MOVE_FILE macro to a function named move_file 2010-02-03 15:12:13 -06:00
Slava Pestov 310399995e Add code heap introspection primitive to VM, and make a code-blocks word in tools.memory that wraps a useful interface around this. Add a lookup-return-address word and use this in tools.disassembler.utils 2010-02-03 23:11:32 +13:00
Slava Pestov d19709c188 vm: modify-code-heap primitive now takes a pair of parameters, update-existing? and reset-pics?. If no generic words were changed, PICs do not need to be reset. If no existing words were redefined, the code heap doesn't have to be traced at all. Speeds up compilation of PEGs since those create lots of compilation units 2010-02-03 23:11:28 +13:00
Slava Pestov 0e0b750e7d Update Win64 support 2010-01-25 15:39:34 +13:00
Doug Coleman 9502f6f091 Save images to a temporary file first, then call MOVE_FILE to avoid writing incomplete and truncated images. 2010-01-22 12:59:20 -06:00
Slava Pestov 952a0784a7 vm: remove vm-ptr primitive 2010-01-20 17:06:49 +13:00
Slava Pestov 88004434ec vm: remove primitive table, non-optimizing compiler now looks up primitives with dlsym() 2010-01-19 20:00:33 +13:00
Slava Pestov 0165daf56c Stop wearing monocle and use the term "entry point" instead of "XT" throughout VM and compiler; also remove two unused relocation types 2010-01-18 20:54:00 +13:00
Slava Pestov edb1346239 vm: Tweak Factor VM to compile with Microsoft Visual Studio on Windows, in addition to Mingw. Add an Nmakefile which can be used for this purpose. Rename Makefile to GNUmakefile. 2010-01-17 03:43:22 +13:00
Slava Pestov 72311506d2 vm: ensure that non-optimized calls to generic words which have not yet been compiled can still work 2010-01-06 23:49:14 +13:00
Slava Pestov a9f90026df Update x86-32 for assembly entry point changes 2010-01-06 17:55:20 +13:00
Slava Pestov d2baa6dde5 vm: move c_to_factor, lazy_jit_compile_impl, throw_impl, set_callstack assembly routines into non-optimizing compiler for x86-64 2010-01-06 15:47:36 +13:00
Slava Pestov 9399a68786 Change how non-volatile register preservation is done in alien callbacks, with the aim of fixing callbacks on PowerPC, and to eventually eliminate assembly code from VM
- Simplify calculation of offset in relocation table
- Open-code %alien-callback
- Remove magic_frame hack from context objects
- Move magical return instruction from optimizing compiler backend into callback entry stub
2010-01-03 01:11:51 +13:00
Slava Pestov 1453154376 vm: remove VM_ASM_API 2009-12-24 01:37:24 +13:00
Slava Pestov 8f449f1a82 Get optimizing compiler working without global register variables in VM 2009-12-22 15:42:49 +13:00
Slava Pestov a942e2c34d vm: eliminating register variables work in progress. Works on x86-32 with non-optimizing compiler 2009-12-19 10:59:56 +13:00
Slava Pestov 9a149a47ab Merge branch 'master' of git://factorcode.org/git/factor 2009-12-15 07:21:17 -05:00
Slava Pestov 31a260b74c vm: big overhaul of non-optimizing compiler
- change some primitives into sub-primitives: fixnum+ fixnum- fixnum* inline-cache-miss inline-cache-miss-tail
- rename some relocation types for clarity
- some other minor re-organizations and cleanups
2009-12-15 07:20:09 -05:00
Slava Pestov 0244c90414 vm: fep out if monotonic counter decreases 2009-12-14 01:09:04 -06:00
Slava Pestov f50e144288 vm: fix walker 2009-12-02 18:43:45 -05:00
Slava Pestov daf47a539c RT_HERE now takes its argument from the literal table rather than the parameter table, reducing image size further 2009-12-02 04:55:48 -06:00
Slava Pestov 912b1265fc Split literal table into literal and parameter tables, literal table is discarded after code block initialization 2009-12-02 04:28:15 -06:00
Slava Pestov 8a25e8365a vm: Clean up more code duplication and rename a few methods 2009-12-02 01:17:30 -06:00
Slava Pestov 5533a43a86 vm: factor out common code between image loading and initial code block relocation 2009-12-02 00:54:16 -06:00
Slava Pestov ca7bca6738 Big cleanup of literal table and relocation-related code
- new way to iterate over instruction_operands cleans up relocation code
- move some methods out of the VM class to clean up code
- if debugging is on, die earlier if attempting to allocate inside GC
- callback heap entries are now code_blocks
- replace block_granularity with data_alignment
2009-12-02 00:48:41 -06:00
Slava Pestov 8d41693ee3 vm: growing heap no longer uses relocate_code_block() 2009-11-28 19:48:26 -06:00
Slava Pestov 3d335474fe vm: new image relocation that doesn't use literal table 2009-11-27 17:05:08 -06:00
Slava Pestov 0ac2a92d56 vm: new implementation of modify-code-heap that doesn't use literal tables 2009-11-25 17:20:48 -06:00
Slava Pestov 19835ab32e vm: non-optimizing compiler now compiles word definition quotations with the owner set to the word object 2009-11-24 22:44:04 -06:00
Slava Pestov 0521890f97 vm: flush icache after GC 2009-11-24 21:36:35 -06:00
Slava Pestov 3789e75e0c vm: compaction now updates the needs_fixup set 2009-11-24 19:29:59 -06:00
Slava Pestov bfa5340ea8 vm: mark sweep now traces code block references; rename embedded_pointer to instruction_operand 2009-11-23 19:17:12 -06:00
Slava Pestov e66b8673f4 vm: minor GC traces embedded pointers 2009-11-22 13:37:39 -06:00
Slava Pestov 272deedefe Fix conflict 2009-11-22 02:12:44 -06:00
Doug Coleman 26a9852b8c fix windows compile error 2009-11-20 04:21:21 -06:00
Doug Coleman a896eef7b4 remove sleep_micros, add sleeo_nanos to vm 2009-11-19 04:49:29 -06:00
Doug Coleman addb1c90bb rename millis to system-millis, micros to system-micros, add nano-count 2009-11-18 15:58:48 -06:00
Doug Coleman 1861dd2705 initial commit to nanos branch to replace micros 2009-11-18 04:20:05 -06:00
Doug Coleman 3323072613 Merge branch 'master' into startup
Conflicts:
	core/bootstrap/primitives.factor
	vm/run.hpp
2009-11-15 02:52:50 -06:00
Slava Pestov eb165a5450 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 06fb247b8c Invalidate inline caches used by call( and execute( when words are redefined 2009-11-12 16:09:07 -06:00
Slava Pestov 585a1a7fbe 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 21c165190c 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 68f3087c1c Faster identity-hashcode primitive; fast path now opencoded by the compiler 2009-11-11 02:27:19 -06:00
Slava Pestov 4168ffbcee New identity-hashcode primitive 2009-11-10 21:18:54 -06:00
Slava Pestov c434201b33 vm: eliminating literal table work in progress 2009-11-07 16:16:09 -06:00
Slava Pestov 2f8ba13da0 vm: faster data_root and <array> primitive 2009-11-06 05:30:37 -06:00
Slava Pestov 7c0c2fec47 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 065dac3736 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 fa50753d40 vm: remove some dead code 2009-11-05 19:32:26 -06:00
Slava Pestov 9ae5faa14e vm: rewrite 'become' primitive so that it uses a slot visitor instead of GC 2009-11-05 19:03:51 -06:00
Slava Pestov 40a82aba19 tools.time: overhaul 2009-11-05 01:07:59 -06:00
Slava Pestov f2bf46e516 vm: fix issue with unnecessary heap growth 2009-11-03 22:25:22 -06:00
Slava Pestov b341527428 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 d65296b334 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 f68319fef3 vm: more sweep phase optimizations 2009-11-01 04:40:15 -06:00
Slava Pestov c7430d74c2 vm: remove promotion strategy, clean up compaction code 2009-11-01 03:47:09 -06:00
Slava Pestov 99e3b9c59c 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 761978b662 Merge optimizations from master branch 2009-10-31 03:02:19 -05:00
Slava Pestov 984a8e6adf vm: faster tuple allocation primitives 2009-10-31 02:58:00 -05:00
Slava Pestov 2d0a36804f 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 e2beabf2be 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 503137b1b9 vm: clean up gc events, remove -verbosegc switch, fix compaction bug 2009-10-27 21:31:28 -05:00
Slava Pestov 61c2ff4fff 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 74ecd90cd6 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 d574aeb70a vm: make compaction its own gc_op 2009-10-25 14:02:14 -05:00
Slava Pestov b064946b11 vm: debugging compaction 2009-10-25 08:07:21 -05:00
Slava Pestov 7142274aef vm: combine heap_block and code_block structs, eliminates some boilerplate 2009-10-24 21:33:31 -05:00
Slava Pestov 7a1f2b2d4b vm: clean up code heap visitor 2009-10-24 04:36:29 -05:00
Slava Pestov 38df6426de vm: move binary_payload_start() method from factor_vm to object class 2009-10-24 04:27:45 -05:00
Slava Pestov 60f3cb669a vm: data heap compaction work in progress 2009-10-24 04:18:33 -05:00
Slava Pestov eefcc0fb8c 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 6c561b5c4c vm: rename userenv to special_objects 2009-10-23 00:33:53 -05:00
Slava Pestov b78202e816 Merge branch 'master' into new_gc 2009-10-22 05:40:57 -05:00
Slava Pestov 28de799296 vm: fix compilation 2009-10-22 06:38:02 -04:00
Slava Pestov 5a63edf278 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 e51882c555 vm: debugging mark and sweep 2009-10-21 23:24:35 -05:00
Slava Pestov 6ee56ca93a vm: use iostreams instead of printf for debug messages, clean up a few things 2009-10-21 20:12:57 -05:00
Slava Pestov a03a817bdb vm: mark sweep gc for tenured space work in progress 2009-10-20 22:20:49 -05:00
Slava Pestov 056ccc6741 vm: split off free_list_allocator from heap class, rename zone to bump_allocator 2009-10-20 15:26:11 -05:00
Slava Pestov 1f97169c62 vm: move factor_vm::untagged_object_size() to object::size() 2009-10-20 13:13:39 -05:00