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