Doug Coleman
570801ff3d
Use nano_count instead of system_micros
2010-06-16 23:20:00 -05:00
Slava Pestov
f29a1038eb
vm: improved fingering technique
2010-06-16 19:08:58 -04:00
Slava Pestov
e86f434f26
Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction
2010-06-14 19:39:46 -04:00
Slava Pestov
70b8a74208
vm: have to be extra careful when messing with return addresses
2010-06-13 18:12:57 -04:00
Slava Pestov
3f28c0e7f5
vm: context switching needs to scrub the return address
2010-06-12 19:54:31 -04:00
Slava Pestov
4405a66f99
vm: fix RT_HERE fixup on image load
2010-06-11 21:54:47 -04:00
Slava Pestov
997a7543a9
vm: fix typo
2010-06-11 20:08:52 -04:00
Slava Pestov
806e54630a
GC maps for more compact inline GC checks
2010-06-11 20:06:00 -04:00
Slava Pestov
91cd3b854d
Use ##local-allot to simplify longlong unboxing
2010-05-19 01:07:22 -04:00
Slava Pestov
5b48cd2a63
FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing
2010-05-16 03:43:23 -04:00
Slava Pestov
c2558e6a66
vm: fix longlong accessors
2010-05-11 23:24:48 -04:00
Slava Pestov
7d62376e24
vm: fix compile error
2010-05-11 19:29:50 -04:00
Slava Pestov
eb802208d1
FFI rewrite part 4: parameter and return value unboxing redesign
2010-05-11 19:11:44 -04:00
Slava Pestov
45689dbfe6
compiler: simplify ##unbox-small/large-struct by emitting an ##unbox-any-c-ptr first
2010-05-10 01:38:34 -04:00
Joe Groff
ec6c2ccc3e
silence more msvc warnings
2010-05-05 22:32:45 -07:00
Joe Groff
11deca47b4
quiet some data conversions warnings raised by msvc
2010-05-05 22:22:13 -07:00
Slava Pestov
e763c74096
More FFI cleanups
2010-05-05 01:13:45 -04:00
Slava Pestov
fec408260e
vm: tweak inline_gc() for PowerPC
2010-05-04 06:52:30 -04:00
Slava Pestov
58e4381eb1
compiler: new "binary literal area" at the end of a word's machine code stores constant floats and SIMD vectors; this allows ##load-reference/##load-memory fusion to be performed on x86-64, with a RIP-relative address reaching the data; also simplifies VM since custom relocation types used by the previous 32-bit-only optimization are no longer needed
2010-05-03 17:34:35 -04:00
Slava Pestov
9788323d25
compiler: add ##load-vector instruction to avoid wasting a temporary register on x86-32
2010-05-03 17:34:28 -04:00
Slava Pestov
1b4b66e341
cpu.x86: use available type info to generate more efficient %box-displaced-alien where possible
2010-05-03 17:34:27 -04:00
Slava Pestov
d23bb19b55
Code cleanups
2010-05-03 17:34:17 -04:00
Slava Pestov
95ff5ffe51
New GC checks work in progress
2010-05-03 17:34:16 -04:00
Slava Pestov
a9ccfa8f05
strings: move string-nth primitive out of the VM and into the library
2010-05-03 17:34:12 -04:00
Doug Coleman
366ce2896f
Add callstack-bounds primitive to vm/ for use with javascriptcore library
2010-04-19 20:08:15 -05:00
Slava Pestov
2517b2fc2b
compiler: combine ##load-constant followed by ##alien-double into a ##load-double on x86-32, saving an integer register
2010-04-18 21:42:45 -05:00
Slava Pestov
216a05e68a
vm: small cleanup
2010-04-13 21:24:42 -07:00
Slava Pestov
288090d993
math.parser: expose a format-float primitive for use by formatting vocabulary
2010-04-13 21:21:28 -07:00
Slava Pestov
0d3861bb5d
vm: fix compiler warnings raised by CL
2010-04-12 18:12:55 -05:00
Slava Pestov
1434a305c8
vm: add a new rc-absolute-1 relocation class to allow storing values in 8-bit operands, and optimized code sequences for inline caches using this
2010-04-12 14:22:41 -07:00
Slava Pestov
eaccd0b56a
vm: speed up nano-count primitive on Windows
2010-04-11 22:27:49 -05:00
Slava Pestov
a417b0e70d
vm: speed up nano-count primitive on Mac OS X
2010-04-11 20:26:11 -07:00
Slava Pestov
4fb2acb65e
vm: try a smaller call stack size on OpenBSD again, now that x86-32 stack frames are smaller
2010-04-10 17:26:56 -07:00
Slava Pestov
46a1fb2646
Merge remote branch 'origin/abi-symbols' into fastcall-madness
2010-04-10 00:10:33 -07:00
Slava Pestov
e5e51c40a1
vm: implement frame-based SEH for 64-bit Windows
2010-04-08 10:32:14 -07:00
Slava Pestov
c931870cd7
vm: fix compile error under Cygwin
2010-04-06 16:30:41 -05:00
Joe Groff
3e0d86f355
Merge branch 'master' of git://factorcode.org/git/factor into abi-symbols
...
Conflicts:
basis/compiler/tests/alien.factor
2010-04-06 12:30:15 -07:00
Slava Pestov
ff0e084f94
vm: dllexport exception_handler for great justice
2010-04-05 15:48:09 -05:00
Slava Pestov
9b44451682
Safe SEH is better than abstinence
2010-04-05 15:02:32 -05:00
Slava Pestov
ce16c4ec2c
vm: fix callback heap code on 64-bit Windows
2010-04-04 17:46:36 -04:00
Slava Pestov
d70cf197f2
vm: fix compile error
2010-04-04 13:53:17 -05:00
Slava Pestov
74640b7f71
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
de4343eaf7
vm: re-organize context structure
2010-04-02 15:42:29 -04:00
Slava Pestov
b740a1fe5d
vm: use C++ exceptions instead of longjmp(), to make Windows crash more
2010-04-02 14:10:55 -04:00
Slava Pestov
d24ce84dde
vm: larger default callstack on PowerPC
2010-04-02 14:09:58 -04:00
Joe Groff
5dcfb383a6
add tests for struct returns from fastcall
2010-04-01 23:52:56 -07:00
Slava Pestov
279ff3a7d3
vm: smaller default callstack size on OpenBSD
2010-04-02 00:36:45 -04:00
Slava Pestov
fa9b6e086b
vm: oops
2010-04-02 00:22:16 -04:00
Slava Pestov
d9d12ab8fb
vm: don't try loading Factor VM DLL anymore
2010-04-02 00:03:26 -04:00
Slava Pestov
0faa3bcf4a
vm: pre-allocate context alien
2010-04-02 00:02:21 -04:00
Joe Groff
ef884ef7f2
Merge branch 'master' into abi-symbols
2010-04-01 15:28:36 -07:00
Joe Groff
6d8c30ad98
statically link factor executable to VM so dylib is only needed for embedding
2010-04-01 14:25:02 -07:00
Joe Groff
a191937c47
typos in ffi tests
2010-04-01 03:02:36 -07:00
Joe Groff
fca8ba3d0a
add fastcall functions to ffi tests
2010-04-01 02:22:42 -07:00
Slava Pestov
4b1361833e
cpu.ppc: updating non-optimizing compiler backend for green threads (untested)
2010-03-31 15:19:14 -04:00
Slava Pestov
fb2ecab614
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
c7142e4281
threads: use context-switching primitives
2010-03-29 20:40:17 -04:00
Slava Pestov
946b7415e0
vm: fix typos
2010-03-29 02:27:45 -04:00
Slava Pestov
43b2e02534
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
8ab0d12e8d
vm: callstack errors were flipped
2010-03-29 01:53:30 -04:00
Doug Coleman
b40382f412
vm: don't use sigaltstack() on OpenBSD because OpenBSD sucks
2010-03-28 18:26:39 -05:00
Slava Pestov
46ec4ff093
vm: fix SEH on Windows
2010-03-28 17:57:47 -05:00
Slava Pestov
bddbcd24cd
vm: fix OpenBSD compilation
2010-03-28 12:53:01 -04:00
Slava Pestov
84c01e1ab3
vm: fix compilation on FreeBSD
2010-03-28 12:52:16 -04:00
Slava Pestov
9ffe0a69d1
vm: use sigaltstack to handle callstack overflow properly
2010-03-28 11:37:28 -04:00
Slava Pestov
031ea6c39c
vm: fix factor_vm::dispatch_signal()
2010-03-28 08:29:10 -04:00
Slava Pestov
19aef06741
vm: fix compilation on various Unices
2010-03-27 09:44:20 -04:00
Slava Pestov
b5f7e91bdc
vm: report callstack overflow
2010-03-27 07:45:11 -04:00
Slava Pestov
11ddbc03a4
vm: signal handling cleanup
2010-03-27 07:33:28 -04:00
Slava Pestov
69bb81dab8
vm: clean up TLS usage
2010-03-27 03:44:40 -04:00
Slava Pestov
fa08afdde8
vm: fix ridiculous default callstack size
2010-03-27 03:35:10 -04:00
Slava Pestov
1717b8d0f7
Implement start-context and set-context primitives
2010-03-27 02:56:11 -04:00
Slava Pestov
560c119cd2
vm: actually use context callstacks when running code
2010-03-26 22:44:43 -04:00
Slava Pestov
1e4e66d6a2
vm: another fix
2010-03-23 04:17:39 -04:00
Slava Pestov
ffafafd951
vm/mach_signal.c: work around Mac OS X 10.6 API change (or bug?)
2010-03-23 04:04:08 -04:00
Daniel Ehrenberg
930b0d931b
Using a higher-order C macro to clean up duplication in declaring/defining VM primitives
2010-03-19 14:05:14 -04:00
Slava Pestov
6aee6b3adc
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
Joe Groff
1c08fde381
yay C89
2010-03-01 17:56:17 -08:00
Joe Groff
ac979619e6
record the C++ compiler version in the VM, and expose it with a vm-compiler word
2010-03-01 13:32:07 -08:00
Doug Coleman
dad3870abd
Use for(;;) instead of do/while in a few places, fix safe_fread's error handling
2010-02-24 02:50:41 -06:00
Slava Pestov
af0ddd5985
Specialized arrays, structs and other objects responding to the >c-ptr / byte-length protocol can now be written to binary streams
2010-02-24 20:18:41 +13:00
Joe Groff
c3e60fc9c3
vm: change id of windows app icon resource to more standard "APPICON"
2010-02-15 11:26:56 -08:00
Slava Pestov
747974f4ae
vm: nuke unused (string>float) primitive
2010-02-08 08:16:56 +13:00
Doug Coleman
d22eb40360
Fix spaces that crept into vm/ cpp files
2010-02-06 01:06:26 -06:00
Slava Pestov
c08fa9cb6e
vm: disable silly nano-count workaround on Win64, fix some indentation issues
2010-02-06 00:45:29 -06:00
Doug Coleman
f72bcd3346
reorder functions in header file
2010-02-04 23:55:17 -06:00
Doug Coleman
06f02d1314
Refactor error handling in io.cpp. Update image.cpp and header files for changes.
2010-02-04 23:53:54 -06:00
Doug Coleman
a2ce57d856
Allow setting errno instead of just clearing it
2010-02-03 17:20:24 -06:00
Doug Coleman
7447fc1073
fix typo in os-windows.cpp
2010-02-03 16:03:22 -06:00
Doug Coleman
950eaed73a
Change the MOVE_FILE macro to a function named move_file
2010-02-03 15:12:13 -06:00
Slava Pestov
22fbe01c17
Compiled code size optimizations for x86-64 resulting in development image size reduction of about 350kb
...
- RIP-relative LEA is now used to load program counter in prolog and tail calls; saves 3 bytes of code and 4 bytes of relocation information over an immediate MOV
- VM field accesses no longer involve a redundant addition
2010-02-03 23:11:35 +13:00
Slava Pestov
bf40237a17
vm: always check call sites when installing PICs, not just when FACTOR_DEBUG is on, since the check is cheap and saves debugging time when compiler is changed
2010-02-03 23:11:34 +13:00
Slava Pestov
26cae00eeb
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
3259ef4bec
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
fbf078d4b3
words: undefined error now contains the word in question
2010-02-03 23:11:23 +13:00
Slava Pestov
7d9628a6ae
vm: fix ffi_test.h
2010-02-02 05:15:42 -05:00
Slava Pestov
bf05a901c4
Fix ffi-test library to work with Windows SDK. Turns out MINGW has a different ABI for struct returns than MS's compiler; make the MS ABI the default for cdecl on Windows, and add mingw ABI for libraries that use the MINGW ABI
2010-02-02 04:01:12 -06:00
erikc
f33c73bf94
Merge up
2010-01-30 20:39:43 -08:00
Slava Pestov
94c93f0bc7
vm: 'become' primitive needs to update literal references in code blocks
2010-01-27 18:42:31 +13:00
Slava Pestov
942f6e0943
Update Win64 support
2010-01-25 15:39:34 +13:00
Doug Coleman
7c40fc1a36
unix-system-call io-error -> unix-system-call drop
...
make unix.ffi, unix.ffi.linux unportable
fix spacing in io.cpp before refactoring
2010-01-23 09:07:35 -06:00
Doug Coleman
40cf302d2d
Fix image save on Windows
2010-01-22 12:59:36 -06:00
Doug Coleman
bb2f455747
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
Doug Coleman
bbd4e27275
Tighten up libc file io code to avoid EINTR problems
2010-01-22 12:59:14 -06:00
Slava Pestov
00328c85e0
vm: remove vm-ptr primitive
2010-01-20 17:06:49 +13:00
Slava Pestov
cc69719147
vm: don't recompile lazy-jit-compile more than once
2010-01-20 02:48:31 +13:00
Slava Pestov
5606825e8b
vm: remove primitive table, non-optimizing compiler now looks up primitives with dlsym()
2010-01-19 20:00:33 +13:00
Slava Pestov
d36b83d6a9
Use ParseCommandLineArgvw() on Windows again, instead of hand-rolled parser. Update Nmakefile to link in shell32.dll, where this function is defined
2010-01-18 06:12:04 -06:00
Slava Pestov
637a77c018
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
64935158a0
vm: fix command line parsing on Windows
2010-01-17 00:05:52 -06:00
Doug Coleman
1d2e4747a9
Work around gcc bug on openbsd
2010-01-16 23:59:16 -06:00
Slava Pestov
3fba385c74
Remove generated file factor.res added by mistake
2010-01-17 18:00:26 +13:00
Slava Pestov
d478fd01f0
Nmakefile: build factor.dll and link in resource file
2010-01-16 22:41:17 -06:00
Slava Pestov
e4da687413
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
2aa4d3d432
vm: fix compilation on 64-bit platforms
2010-01-14 02:18:49 +13:00
Slava Pestov
2922e08ed9
vm: rework platform.hpp so that it is no longer necessary to pass -DFACTOR_64 and -DWINDOWS when compiling VM
2010-01-13 23:06:45 +13:00
Slava Pestov
7bf76b9f13
PowerPC optimizing compiler backend fixes
2010-01-12 08:02:10 -06:00
Slava Pestov
8d34a0f3c1
Store VM object in a register on x86-64
2010-01-11 01:20:32 +13:00
Slava Pestov
6266b41325
Starting to update PowerPC backend for recent VM changes (untested)
2010-01-08 19:46:27 +13:00
Slava Pestov
0fd3c78157
vm: remove some unused #defines
2010-01-07 21:33:19 +13:00
Slava Pestov
97a042085d
Merge branch 'master' of git://factorcode.org/git/factor
2010-01-07 01:40:39 -05:00
Slava Pestov
f5cc9ef66d
vm: add VM_C_API declaration for factor_memcpy function
2010-01-07 01:40:20 -05:00
Slava Pestov
1f88a925b4
Fix set-callstack primitive on Windows
2010-01-07 19:31:15 +13:00
Slava Pestov
ea2bd73214
Remove .S support from Makefile
2010-01-07 18:12:33 +13:00
Slava Pestov
0ad8ba204b
vm: remove asm.h
2010-01-07 18:05:31 +13:00
Slava Pestov
235f3238f5
Add alien-assembly form for inline assembler, works like alien-invoke except calls a user-supplied quotation instead of generating a subroutine call. Replaces FPU status control, SSE detection and read timestamp routines in vm/cpu-x86.*S
2010-01-07 17:39:22 +13:00
Slava Pestov
89e9f77b44
vm: Remove some dead code
2010-01-07 13:54:22 +13:00
Slava Pestov
6971df91fe
vm: remove unnecessary call to compile_all_words() from primitive_become()
2010-01-07 13:49:29 +13:00
Slava Pestov
c04fef10c7
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
47c6197799
Update x86-32 for assembly entry point changes
2010-01-06 17:55:20 +13:00
Slava Pestov
36d2ac8921
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
18929373b9
Merge branch 'master' of git://factorcode.org/git/factor
2010-01-03 23:21:31 +13:00
Slava Pestov
ba5b90e063
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
Doug Coleman
eae646bfa0
remove warning
2009-12-28 10:02:36 -06:00
Doug Coleman
348b4bd2dc
Merge branch 'master' of git://factorcode.org/git/factor
2009-12-28 09:58:19 -06:00
Doug Coleman
964dbfe72d
avoid integer division in nano_count on windows
2009-12-28 09:56:10 -06:00
Slava Pestov
81430947d5
PowerPC: fix set-callstack primitive and start updating optimizing compiler backend for recent changes
2009-12-28 08:08:15 -06:00
Slava Pestov
285caff08e
Updating non-optimizing PowerPC backend for register variable removal (untested)
2009-12-28 12:40:45 +13:00
Slava Pestov
4d70649914
Merge branch 'eliminating_register_variables'
2009-12-27 01:29:53 +13:00
Slava Pestov
a77f48fe6b
Updating x86-64 port for global register variable removal
2009-12-27 01:17:42 +13:00
Slava Pestov
67153bf4bb
Fix bug in c_to_factor
2009-12-26 15:24:46 +13:00
Slava Pestov
7271900e6f
vm: code cleanup
2009-12-26 15:24:21 +13:00
Doug Coleman
7fa3b71c07
Add 0xe06d7363 to debugger.windows. Remove case 0xe06d7363 from SEH.
2009-12-23 14:04:52 -06:00
Slava Pestov
15eb8d1a0a
vm: remove VM_ASM_API
2009-12-24 01:37:24 +13:00
Doug Coleman
ab7792f25c
remove debug output
2009-12-22 14:39:30 -06:00
Doug Coleman
7077cb4bfb
try a different approach to fix the windows monotonic counter
2009-12-22 14:36:33 -06:00
Doug Coleman
c84f46fe8b
Ignore yet another undocumented exception. Tricks of the trade, I guess.
2009-12-22 13:33:39 -06:00
Slava Pestov
2b8521a326
Merge branch 'master' into eliminating_register_variables
2009-12-22 15:50:15 +13:00
Slava Pestov
febccd5f62
vm: if an aging GC is triggered while uninitialized code blocks are in the code heap, the code heap remembered set becomes out of date, resulting in code blocks pointing at invalid data
2009-12-22 15:49:21 +13:00
Slava Pestov
e96404327e
Get optimizing compiler working without global register variables in VM
2009-12-22 15:42:49 +13:00
Slava Pestov
63edd20a55
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
eb0a28aa54
Merge branch 'master' of git://factorcode.org/git/factor
2009-12-15 07:21:17 -05:00
Slava Pestov
0068bce934
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
dde84a11fb
Merge branch 'master' of git://factorcode.org/git/factor
2009-12-14 01:09:40 -06:00
Slava Pestov
0a3c5f5ac6
vm: fep out if monotonic counter decreases
2009-12-14 01:09:04 -06:00
Doug Coleman
b0b1da0923
Merge branch 'master' of git://factorcode.org/git/factor
...
Conflicts:
vm/os-windows-nt.cpp
2009-12-13 20:45:40 -06:00
Doug Coleman
0eccec2133
workaround for QueryPerformanceCounter: if the high part of the count doesn't increment when the low part overflows, keep track of this and add the correction on future calls to nano_count
2009-12-13 20:42:51 -06:00
Doug Coleman
1454e534fe
fix a couple of warnings on win64
2009-12-13 20:00:02 -06:00
Slava Pestov
62e7aed2d3
vm/os-windows-nt.cpp: fix formatting
2009-12-13 16:52:59 -06:00
Slava Pestov
564934a9f1
fix compiler warning on linux
2009-12-13 16:10:30 -06:00
Slava Pestov
6552a4524c
vm: OS X version ccheck was failing on 10.5.0
2009-12-11 19:31:19 -05:00
Slava Pestov
344c357ef1
vm: grow the heap if a full collection doesn't reclaim enough space
2009-12-05 19:03:53 -05:00
Slava Pestov
9705768e3f
vm: remove DEFPUSHPOP macro
2009-12-04 20:56:48 -05:00
Slava Pestov
ead592697b
vm: be more eager to do a full collection to avoid fragmentation leading to heap growth
2009-12-04 03:41:19 -05:00
Slava Pestov
9963d265ba
vm: fix walker
2009-12-02 18:43:45 -05:00
Slava Pestov
998cc59dbc
vm: PowerPC fixes
2009-12-02 16:24:42 -06:00
Slava Pestov
d76d49d6cd
Fix typo in instruction_operand::load_value_masked()
2009-12-02 09:24:23 -05:00
Slava Pestov
514043eb14
vm: fix instruction_operand::load_value() for PowerPC relocation classes
2009-12-02 09:20:33 -05:00
Slava Pestov
066d2836ca
Get modify-code-heap working if stack traces are stripped (but then it won't update existing code blocks), and rename code_heap::code_heap_free() to code_heap::free()
2009-12-02 05:27:48 -06:00
Slava Pestov
eb840dcf41
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
68c09f0e93
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
147edb1ce9
vm: update callback stub machine code at the end of compaction to prevent it from seeing an inconsistent data stack
2009-12-02 03:31:57 -06:00
Slava Pestov
d49c86ba11
vm: Clean up more code duplication and rename a few methods
2009-12-02 01:17:30 -06:00
Slava Pestov
d664507b36
vm: factor out common code between image loading and initial code block relocation
2009-12-02 00:54:16 -06:00
Slava Pestov
c6602bda27
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
260cc9e2ff
vm: growing heap no longer uses relocate_code_block()
2009-11-28 19:48:26 -06:00
Slava Pestov
9a79a6253c
vm: fix some typos
2009-11-27 22:54:24 -06:00
Slava Pestov
333c7654ae
Merge branch 'no_literal_table' of git://factorcode.org/git/factor into no_literal_table
2009-11-27 18:33:34 -06:00
Slava Pestov
b683ecaa74
Merge branch 'master' of git://factorcode.org/git/factor into no_literal_table
2009-11-27 18:32:21 -06:00
Slava Pestov
58c21a1a11
vm: new image relocation that doesn't use literal table
2009-11-27 17:05:08 -06:00
Slava Pestov
bd02eef38e
Fix non-tail recursive inline recursive compilation
2009-11-25 19:12:09 -06:00
Slava Pestov
77a877789a
vm: new implementation of modify-code-heap that doesn't use literal tables
2009-11-25 17:20:48 -06:00
Slava Pestov
4ebaf956c3
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
73e105bfc4
vm: flush icache after GC
2009-11-24 21:36:35 -06:00
Slava Pestov
b09d6ef586
vm: deallocate old PIC after allocating the new one to avoid having the code heap potentially point to a free block during compaction
2009-11-24 21:20:23 -06:00
Slava Pestov
bfd4cce364
vm: compaction now updates the needs_fixup set
2009-11-24 19:29:59 -06:00
Slava Pestov
001a3f2847
vm: mark sweep now traces code block references; rename embedded_pointer to instruction_operand
2009-11-23 19:17:12 -06:00
Slava Pestov
b28619ce2f
vm: minor GC traces embedded pointers
2009-11-22 13:37:39 -06:00
Slava Pestov
57fe0dea48
Fix conflict
2009-11-22 02:12:44 -06:00
Doug Coleman
6b780f5843
fix openbsd compile
2009-11-30 12:58:39 -06:00
Doug Coleman
bce084ac12
fix windows compile error
2009-11-20 04:21:21 -06:00
Slava Pestov
24c3ddbbde
Clean up startup/shutdown hook code
2009-11-20 00:57:49 -06:00
Doug Coleman
987602235e
remove sleep_micros, add sleeo_nanos to vm
2009-11-19 04:49:29 -06:00
Slava Pestov
2e3207b590
vm: fix compilation with DEBUG=1
2009-11-19 02:08:05 -06:00
Slava Pestov
f47b72d98b
Fix potential assertion failure if GC was invoked while enabling profiling
2009-11-19 01:49:26 -06:00
Doug Coleman
251ebb7f91
vm/Config.openbsd: pass in -fno-inline-functions to work around apparent gcc bug
2009-11-18 19:06:26 -06:00
Doug Coleman
6f7ec206a1
rename millis to system-millis, micros to system-micros, add nano-count
2009-11-18 15:58:48 -06:00
Doug Coleman
0145f0f860
link against librt
2009-11-18 11:09:05 -06:00
Doug Coleman
60d8ef22b8
fix current_nanos on windows
2009-11-18 11:04:46 -06:00
Doug Coleman
b4206f5252
initial commit to nanos branch to replace micros
2009-11-18 04:20:05 -06:00
Slava Pestov
cf35ffb126
vm: fix problem in card marking if first block is free
2009-11-16 00:52:32 -06:00
Doug Coleman
51e21a6aa8
update vm for startup branch
2009-11-15 02:53:02 -06:00
Doug Coleman
cc194416f9
Merge branch 'master' into startup
...
Conflicts:
core/bootstrap/primitives.factor
vm/run.hpp
2009-11-15 02:52:50 -06:00
Slava Pestov
4c268f2600
vm: record compaction events correctly
2009-11-13 09:29:21 -06:00
Slava Pestov
86da8ebed9
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
cba12eae37
Invalidate inline caches used by call( and execute( when words are redefined
2009-11-12 16:09:07 -06:00
Slava Pestov
9a475570e4
Revert "Revert "vm: faster allocation in tenured space and code heap. If small free list exhausted, allocate a 1kb block and split it up instead of searching larger free lists""
...
This reverts commit 81a68ebd36
.
2009-11-11 19:33:50 -06:00
Slava Pestov
c2b3d6b894
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
5169dddc40
Revert "vm: faster allocation in tenured space and code heap. If small free list exhausted, allocate a 1kb block and split it up instead of searching larger free lists"
...
This reverts commit 9af2fa1957
.
2009-11-11 05:47:22 -06:00
Slava Pestov
2c8f67851e
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
2afd7ce244
Faster identity-hashcode primitive; fast path now opencoded by the compiler
2009-11-11 02:27:19 -06:00
Slava Pestov
064c00f78d
New identity-hashcode primitive
2009-11-10 21:18:54 -06:00
Slava Pestov
4162ee2127
vm: faster allocation in tenured space and code heap. If small free list exhausted, allocate a 1kb block and split it up instead of searching larger free lists
2009-11-10 20:19:29 -06:00
Slava Pestov
cb6552ae6e
vm/contexts: cleanup
2009-11-08 19:44:18 -06:00
Slava Pestov
8b52d85aed
vm: minor cleanup
2009-11-08 06:08:17 -06:00
Samuel Tardieu
351e795a52
Add parentheses to prevent GCC warning
2009-11-08 02:01:48 +01:00
Slava Pestov
57c541ea46
vm: eliminating literal table work in progress
2009-11-07 16:16:09 -06:00
Slava Pestov
43e08c76fb
vm: on 32-bit, the largest free block size was only 512mb, leading to weird errors if the heap grew beyond this. eliminate this limit
2009-11-06 08:44:36 -06:00
Slava Pestov
11075828e5
vm: faster data_root and <array> primitive
2009-11-06 05:30:37 -06:00
Slava Pestov
eac0f9ffcf
vm: report true size of mark stack
2009-11-06 04:15:55 -06:00
Slava Pestov
c512013220
vm: fix crash if all-instances primitive triggers a GC
2009-11-06 01:41:11 -06:00
Slava Pestov
84e191704e
vm: fix crash in profiler
2009-11-06 01:22:53 -06:00
Slava Pestov
e2107166ff
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
b011295300
vm: fix 'become' when aging space is empty
2009-11-05 23:53:53 -06:00
Slava Pestov
c08d325132
Remove unused error from VM
2009-11-05 21:52:31 -06:00
Slava Pestov
4061951d1c
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
18a2ce1f8c
vm: remove some dead code
2009-11-05 19:32:26 -06:00
Slava Pestov
22c717616c
vm: speed up some bit twiddling on 32-bit
2009-11-05 19:29:27 -06:00
Slava Pestov
72ab6ec548
vm: rewrite 'become' primitive so that it uses a slot visitor instead of GC
2009-11-05 19:03:51 -06:00
Slava Pestov
47df580081
tools.time: overhaul
2009-11-05 01:07:59 -06:00
Slava Pestov
2b1a26228b
Align stack pointer on non-Mac OS X x86-32 platforms, and use aligned loads/stores for SIMD values
2009-11-03 23:51:44 -06:00
Slava Pestov
e1c365e69a
vm: fix issue with unnecessary heap growth
2009-11-03 22:25:22 -06:00
Slava Pestov
9ffb01a9bd
vm: fix fixnum* overflow case for 4-bit tags
2009-11-03 21:40:47 -06:00
Slava Pestov
ed3ab1335e
vm: minor fixes after code review
2009-11-03 04:56:58 -06:00
Slava Pestov
2c0531b015
vm: faster immediate_p()
2009-11-02 20:21:21 -06:00
Slava Pestov
3b767c4d08
vm: remove debug messages
2009-11-02 18:24:04 -06:00
Slava Pestov
68217016d0
vm: add two missing files
2009-11-02 18:11:12 -06:00
Slava Pestov
6c2c87758a
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
e4ad642134
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
7e17c3077c
vm: new megamorphic hashcode algorithm improves bootstrap speed
2009-11-02 01:37:58 -06:00
Slava Pestov
94e9230ba3
vm: promote objects referenced from compiled code blocks directly to tenured in an aging collection
2009-11-01 23:14:34 -06:00
Slava Pestov
b2d96e5ef1
vm: remove debug messages
2009-11-01 20:34:54 -06:00
Slava Pestov
e28580dd0f
vm: faster sweep algorithm
2009-11-01 20:24:25 -06:00
Slava Pestov
882daae06c
vm: more sweep phase optimizations
2009-11-01 04:40:15 -06:00
Slava Pestov
5ae40e26ee
vm: remove promotion strategy, clean up compaction code
2009-11-01 03:47:09 -06:00
Slava Pestov
7cbaf3e0a3
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
b2ba465bcd
Merge optimizations from master branch
2009-10-31 03:02:19 -05:00
Slava Pestov
b202371d62
vm: faster tuple allocation primitives
2009-10-31 02:58:00 -05:00
Slava Pestov
d33d7728a0
vm: fix compile error on non-Mac OS X platforms
2009-10-31 02:36:46 -05:00
Slava Pestov
793d0606f6
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
6f7607eed7
vm: clean up card unmarking
2009-10-30 03:15:50 -05:00
Slava Pestov
5536003cf8
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
a1aac42786
vm: clean up gc events, remove -verbosegc switch, fix compaction bug
2009-10-27 21:31:28 -05:00
Slava Pestov
a7b55e7068
vm: use STL in free list, makes finding largest contiguous free block slightly faster
2009-10-27 18:22:08 -05:00
Slava Pestov
d95a98eb9c
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
91cec17e52
vm: get GC events working, -verbosegc switch now produces more info
2009-10-26 23:57:26 -05:00
Slava Pestov
a60bf14673
vm: add gc_event
2009-10-26 22:12:44 -05:00
Slava Pestov
e793a72060
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
c30df42e48
vm: make compaction its own gc_op
2009-10-25 14:02:14 -05:00
Slava Pestov
7d8c85443e
vm: vm: fix large object allocation logic and change default heap image size for 2009
2009-10-25 13:27:40 -05:00
Slava Pestov
cf247c23a2
vm: room. now prints mark stack size, and total/contiguous free space
2009-10-25 13:18:06 -05:00
Slava Pestov
49baf397f4
vm: tagged typechecks work better with DEBUG=1
2009-10-25 08:07:36 -05:00
Slava Pestov
b7181d14a8
vm: debugging compaction
2009-10-25 08:07:21 -05:00
Slava Pestov
b6a21b19a9
vm: fix compaction when callback heap has entries in it
2009-10-25 00:06:45 -05:00
Slava Pestov
0c1e266302
vm: got data heap compaction working
2009-10-24 23:51:14 -05:00
Slava Pestov
0b65b194c9
vm: fix 'data-room' primitive to report correct sizes for tenured space
2009-10-24 23:49:33 -05:00
Slava Pestov
fae27fb361
vm: make some more ctors explicit just for kicks
2009-10-24 23:02:58 -05:00
Slava Pestov
62e718eaa9
vm: combine heap_block and code_block structs, eliminates some boilerplate
2009-10-24 21:33:31 -05:00
Slava Pestov
45a955b5bb
vm: fix typo in card tracing logic
2009-10-24 04:43:11 -05:00
Slava Pestov
d855593f1f
vm: clean up code heap visitor
2009-10-24 04:36:29 -05:00
Slava Pestov
03f4b4cdd6
vm: move binary_payload_start() method from factor_vm to object class
2009-10-24 04:27:45 -05:00
Slava Pestov
29a27cfde4
vm: data heap compaction work in progress
2009-10-24 04:18:33 -05:00
Slava Pestov
fd1e992e7d
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
810e309e0c
vm: rename userenv to special_objects
2009-10-23 00:33:53 -05:00
Slava Pestov
6597e0ea3a
vm/mark_bits.hpp: fix incorrect constructor argument order
2009-10-22 23:41:02 -05:00
Slava Pestov
3394309659
Merge branch 'master' into new_gc
2009-10-22 05:40:57 -05:00
Slava Pestov
3d5c3935ad
vm: fix compilation
2009-10-22 06:38:02 -04:00
Slava Pestov
f24942e063
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
Joe Groff
432d4f79e9
give better error message for windows exceptions, and don't lop off the top end of the exception code when the vm throws the error
2009-10-21 23:37:51 -05:00
Slava Pestov
606a805d7d
vm: debugging mark and sweep
2009-10-21 23:24:35 -05:00
Slava Pestov
40351d40be
vm: use iostreams instead of printf for debug messages, clean up a few things
2009-10-21 20:12:57 -05:00
Slava Pestov
af855b7fa9
vm: debugging mark-sweep
2009-10-21 19:41:54 -05:00
Slava Pestov
814f6371d6
vm: mark sweep gc for tenured space work in progress
2009-10-20 22:20:49 -05:00
Slava Pestov
f0816d72f1
vm: split off free_list_allocator from heap class, rename zone to bump_allocator
2009-10-20 15:26:11 -05:00
Slava Pestov
a9dbbd1efb
vm: simplify code heap by eliminating HeapLayout template parameter
2009-10-20 14:01:46 -05:00
Slava Pestov
e482940dca
vm: object start recording in cards is now independent of allocation strategy
2009-10-20 13:47:04 -05:00
Slava Pestov
d22d5466fc
vm: move factor_vm::untagged_object_size() to object::size()
2009-10-20 13:13:39 -05:00
Slava Pestov
d85d84697a
Change data heap alignment to 16 bytes
2009-10-20 12:45:00 -05:00
Slava Pestov
50f9bf67a7
vm: fix crash when converting a callstack to an array
2009-10-20 12:19:02 -05:00
Slava Pestov
acdcb181e0
vm: working on making heap more generic
2009-10-20 10:22:06 -05:00
Slava Pestov
838a44e901
vm: change code heap layout somewhat, remove unused allocation bitmap from mark_bits
2009-10-20 09:37:24 -05:00
Doug Coleman
278a6955c5
Merge branch 'master' into startup
2009-10-20 00:31:45 -04:00
Doug Coleman
110b310c54
the exit primitive is now called (exit) and exit calls shutdown hooks.
...
add a stop_factor function to the vm to allow calling the shutdown quotation
2009-10-20 00:28:18 -04:00
Slava Pestov
d585aa861c
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-19 21:44:56 -05:00
Slava Pestov
cafa838588
Merge branch 'master' of git://factorcode.org/git/factor into new_gc
2009-10-19 21:44:36 -05:00
Slava Pestov
21d29b3961
vm: change code heap alignment to 16 bytes instead of 32 to reduce image size
2009-10-19 06:10:39 -05:00
Slava Pestov
4ddd63d83e
vm: move compaction algorithm to mark_bits.hpp since it doesn't rely on properties of heaps per se
2009-10-19 03:05:20 -05:00
Slava Pestov
ac25b8ebbb
vm: new mark_bits data structure replaces hashtable when compacting code heap
2009-10-19 02:21:11 -05:00
Slava Pestov
8ef0d411ac
vm: cleanup
2009-10-19 00:16:32 -05:00
Slava Pestov
464aac14cf
vm: working on new compaction implementation
2009-10-19 00:07:43 -05:00
Slava Pestov
a81f757a62
vm: fix conflict in image.cpp
2009-10-18 20:54:13 -05:00
Slava Pestov
2e65366c6b
vm: rename myvm and parent_vm instance variables to parent, clean up casts in primitive definitions
2009-10-18 20:31:59 -05:00
Slava Pestov
236588208b
vm: rename F to false_object, and rename T to true_object
2009-10-18 20:26:21 -05:00
Slava Pestov
2b63029da8
vm: fix GC safety issue in non-optimizing compiler
2009-10-18 18:57:41 -05:00
Slava Pestov
69f9c80b5b
vm: code heap: move mark bits to a separate bitmap
2009-10-16 14:41:40 -05:00
Slava Pestov
2917063a1a
vm: fix typo
2009-10-16 12:25:21 -05:00
Slava Pestov
a955a12aa7
vm: fix compile errors on some gcc versions
2009-10-16 12:13:43 -05:00
Slava Pestov
107c96f642
vm: code heap compaction at runtime using compact-gc primitive
2009-10-16 11:39:35 -05:00
Slava Pestov
c04412219b
vm: allocate stacks and data heap segments without execute permissions
2009-10-16 05:16:12 -05:00
Slava Pestov
85b746e7b5
vm: simpler and more efficient code heap compaction; restructure a few things to get ready for runtime code heap compaction
2009-10-16 04:33:35 -05:00
Slava Pestov
349cb41a29
Merge branch 'reentrantvm' of git://github.com/phildawes/factor
2009-10-16 03:52:35 -05:00
Slava Pestov
0a3d08bc52
vm: make the code nice and pretty
2009-10-16 02:55:02 -05:00
Slava Pestov
70dcecf61a
vm: don't flush instruction cache twice per code block on a major GC on PowerPC
2009-10-15 22:31:41 -05:00
Slava Pestov
f212549a5f
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-15 22:12:00 -05:00
Slava Pestov
8a7547ef1b
vm: remove some dead code
2009-10-15 22:06:43 -05:00
Doug Coleman
4c2cdb18b5
fix compiler warning
2009-10-15 21:42:01 -05:00
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
Slava Pestov
93ed6e6892
vm: fix compile error
2009-10-14 19:55:02 -05:00
Slava Pestov
38d120f92e
vm: rt-vm relocation now supports accessing a field directly
2009-10-14 19:24:23 -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
1796688acd
vm: during an aging collection, promote objects referenced from tenured directly to tenured
2009-10-14 06:03:52 -05:00
Slava Pestov
236efe4881
vm: debugging new card marking
2009-10-14 04:59:28 -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
d17c63efa5
vm: rename
2009-10-09 23:37:35 -05:00
Slava Pestov
0bf31e42e6
vm: refactoring card logic a bit
2009-10-09 11:16:18 -05:00
Slava Pestov
1fc48b8894
vm: remove old_data_heap from gc_state
2009-10-09 09:47:54 -05:00
Slava Pestov
639a64c2df
vm: fix integer overflow
2009-10-09 05:55:32 -05:00
Slava Pestov
ab9b462411
vm: build fix
2009-10-09 05:12:28 -05:00
Slava Pestov
978647dc39
Merge branch 'master' of git://factorcode.org/git/factor
2009-10-09 03:21:31 -05:00
Slava Pestov
95722adebc
vm: misc cleanups
2009-10-09 03:20:50 -05:00
Slava Pestov
a4ea6ad339
vm: record bytes/objects copied again
2009-10-09 03:20:06 -05:00
Slava Pestov
07deeb407c
vm: fix formatting
2009-10-09 02:57:04 -05:00
Slava Pestov
f6d4551da5
vm: remove unrolled card scan loop since it appears to be a performance loss
2009-10-09 02:05:31 -05:00
Slava Pestov
d34c7854cd
vm: simplify card marking logic, and unmark more cards during aging collections by checking if they actually contained young pointers or not
2009-10-09 01:37:45 -05:00
Slava Pestov
6e4b4d5830
Fix problem if last card is marked
2009-10-08 23:58:20 -05:00
Slava Pestov
cb2673a6f5
vm: cleanup
2009-10-08 23:39:54 -05:00
Slava Pestov
21f55ab1a3
vm: more efficient code heap remembered set
2009-10-08 23:10:32 -05:00
Slava Pestov
43a21deb05
vm: rename data_gc.cpp to gc.cpp
2009-10-08 02:11:29 -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
db29d60e8e
vm: add code block marking to full_collector.cpp
2009-10-08 00:23:29 -05:00
Slava Pestov
1f8495a62f
vm/os-netbsd.cpp: fix double-free error
2009-10-07 21:49:04 -05:00
Slava Pestov
6939759f46
vm: working on new object-oriented garbage collector
2009-10-07 15:48:09 -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
2311891910
vm: faster zone::contains_p()
2009-10-06 06:47:56 -05:00
Slava Pestov
8fcd6a3789
vm: simplify logic
2009-10-06 06:36:43 -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
2ca0044dd0
vm: tweak
2009-10-06 04:57:44 -05:00
Slava Pestov
ed1ee19ce1
vm: add a remembered set for code blocks which may reference young literals. Improves loading time
2009-10-06 04:36:34 -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
e2fcec6a99
Merge branch 'master' into new_gc
2009-10-06 01:31:50 -05:00
Slava Pestov
884ac79423
vm: minor tweaks which reduce image size by ~300kb
2009-10-06 01:31:39 -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
36c1fcdbe8
Merge branch 'for-slava' of git://git.rfc1149.net/factor
2009-10-05 18:29:31 -05:00
Slava Pestov
b4e36608da
compiler.cfg: remove _gc instruction, it doesn't need to exist, and change GC checks to ensure that the right amount of space is available instead of blindly checking for 1Kb
2009-10-05 05:27:49 -05:00
Slava Pestov
718cb8b579
vm: fix VM constructor
2009-10-05 04:31:35 -05:00
Slava Pestov
95655c26b4
vm: remove debug message
2009-10-05 03:28:36 -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
77860bc95d
let's work with cygwin here..._ftelli64 -> ftello64 on cygwin. fine i guess
2009-10-04 06:10:57 -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
Samuel Tardieu
2bbad8d837
Remove two small memory leaks on Linux
2009-10-03 18:18:07 +02: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
Slava Pestov
cfc8b06ac0
vm: cleanup in os-genunix.cpp
2009-10-02 20:36:19 -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
Joe Groff
f867a776d9
import std::tr1/boost ::unordered_map into the factor namespace instead of using #define
2009-10-02 11:13:27 -05:00
Joe Groff
b4ae77764c
don't leak startargs in start_standalone_factor_in_new_thread
2009-10-02 11:11:17 -05:00
Slava Pestov
96df486753
vm: add assertions to tls_vm()
2009-10-02 09:37:04 -05:00
Slava Pestov
805fea33cb
vm: fix register clobberage in PowerPC c_to_factor (untested)
2009-10-02 09:19:31 -05:00
Slava Pestov
512bf8befa
vm: fix register clobberage in x86 c_to_factor
2009-10-02 09:12:09 -05:00
Slava Pestov
d86ba27577
vm: fix compile error with DEBUG=1
2009-10-02 03:30:02 -05:00
Slava Pestov
2c136d6536
Merge branch 'reentrantvm' of git://github.com/phildawes/factor
2009-10-02 03:28:21 -05:00
Slava Pestov
913408c2a3
vm: fix stack alignment in primitive_inline_cache_miss
2009-10-02 03:25:18 -05:00
Phil Dawes
ded33eda87
removed some superflous newlines
2009-10-01 07:33:16 +01:00
Phil Dawes
70f25c71b9
calls dispatched as per multithreaded, but checked against singleton
2009-09-30 21:25:50 +01:00
Phil Dawes
65bcd86c10
ppc asm to pass vm pointer: inline_cache_miss, set_callstack
2009-09-30 19:43:36 +01:00
Phil Dawes
a73e6f20d4
ppc asm to pass vm pointer: overflow fns
2009-09-30 07:59:36 +01:00
Phil Dawes
6fa0a93498
ppc asm to pass vm pointer: initial bootstrap
2009-09-28 07:48:37 +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
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
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
U-SLAVA-DFB8FF805\Slava
57b98e2c55
vm: fix compilation on Windows
2009-09-26 02:56:55 -05:00
Slava Pestov
6578bd0533
vm: fix windows compilation (untested)
2009-09-26 02:41:01 -05:00
Slava Pestov
fa598be667
Fix GC root safety in word-xt primitive
2009-09-25 21:42:21 -05:00
Slava Pestov
f846afd661
vm: remove safe_malloc now that everything uses constructors instead
2009-09-25 21:22:05 -05:00