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