Joe Groff
29dad5c168
vm: fix windows compile errors
2011-10-27 21:14:47 -07:00
Joe Groff
d103e6b57d
vm: remove unguard-safepoint primitive
2011-10-27 21:14:47 -07:00
Joe Groff
6f831c4f95
vm: block all signals from unix stdin_loop thread
2011-10-27 21:14:47 -07:00
Joe Groff
5b4a95a6a0
vm: SetConsoleCtrlHandler on windows
2011-10-27 21:14:47 -07:00
Joe Groff
e9309a425a
vm: handle async signals at safepoints on unix
...
Factor now supports the new 4.0BSD feature of "signals".
2011-10-27 21:14:46 -07:00
Joe Groff
72c35ffeee
vm: add RT_SAFEPOINT to number_of_parameters()
2011-10-27 21:14:45 -07:00
Joe Groff
5b8bc33311
vm: add RT_SAFEPOINT relocation type
2011-10-27 21:14:44 -07:00
Joe Groff
e6f65d81e4
vm: code_heap::(un)guard_safepoint methods
2011-10-27 21:14:44 -07:00
Joe Groff
d2199b5b21
vm: take a page from code_heap for safepoints
2011-10-27 21:14:44 -07:00
Doug Coleman
703fa2fc1a
Move --no-as-needed to Config.linux since it breaks compilation on mac
2011-10-19 12:09:43 -07:00
Philipp Brüschweiler
069ae6bfb3
Config.unix: don't hardcode ui libs, use pkg-config instead
2011-10-19 11:37:21 -07:00
Joe Groff
fa386228d7
vm: no-op reallot_array with same size, for real
2011-10-17 21:23:01 -07:00
Joe Groff
3ce5dd1ed1
vm: make reallot_array for same size a no-op
2011-10-17 21:23:01 -07:00
Joe Groff
a1fafbd6ec
vm: non-copying primitive_fread
...
primitive_fread now takes a buffer pointer argument and returns a count of bytes read instead of allocating a byte array.
2011-10-17 21:22:57 -07:00
John Benediktsson
58765c31d5
vm: remove math::bignum_producer.
2011-10-11 21:24:38 -07:00
John Benediktsson
da21f5ca61
io.binary: make le> and be> faster (20% and 75%, respectively).
...
Removed primitive byte-array>bignum and digit_stream_to_bignum from vm/.
2011-10-11 21:13:30 -07:00
Slava Pestov
b1b7b24ad5
Add RT_INLINE_CACHE_MISS relocation type to avoid frequent dlsym lookups when compiling PICs. Fixes #123
2011-10-03 00:26:21 -07:00
Slava Pestov
8336d898a3
Rework non-optimizing compiler backend to use compiler.codegen.relocation
2011-10-03 00:26:21 -07:00
Slava Pestov
171cd93573
Fix infinite loop and empty-dlist error when an error is thrown from a callback running in a thread other than the initial thread. This addresses part of issue #92
2011-10-02 21:59:09 -07:00
Doug Coleman
17e0fbe501
Remove Windows CE from core/ basis/ and build-support/
...
Rename the winnt singleton to windows in core/ basis/ extra/
Rename boot images winnt -> windows
Fixes #84 .
2011-09-18 23:19:06 -05:00
Slava Pestov
e129c13a92
Fix undefined-symbol reporting on 32-bit architectures; the return address is exactly at the relocation point in this case
2011-09-13 20:43:07 -07:00
Slava Pestov
6259a50243
callstack.cpp: fix fat-fingered typo from undefined-symbol change
2011-09-12 23:15:09 -07:00
Slava Pestov
20c6aaddec
Tease out symbol name and library in undefined_symbol() handler, for friendlier errors when calling an unresolved C function name. Fixes #93
2011-09-12 00:56:24 -07:00
Slava Pestov
e9c0ac8820
Remove inotify system call wrappers. Hopefully everyone is using a recent glibc now. Fixes #86
2011-09-08 22:03:56 -07:00
Slava Pestov
22ad7c4fcd
vm: fix high_fragmentation_p assertion
2011-09-05 23:30:28 -07:00
Slava Pestov
f4c0ffb143
Clean up some GC logic and fix a bug where large object allocation could grow the heap unnecessarily
2011-09-05 16:28:00 -07:00
Erik Charlebois
2ebc148e18
Remove unnecessary -std=gnu99
...
Flag isn't needed anymore with g++ and it causes warnings with clang.
2011-06-23 01:17:24 -04:00
Erik Charlebois
1ed2bc6231
32 and 64 bit Linux PPC support
2011-05-23 23:36:14 -04:00
Slava Pestov
ae11aa08db
Change do-callback to register the current thread with the callback, instead of busy waiting for the current callback to become the right one before returning. Fixes 100% CPU usage issue with system-alert. Thanks to Blei and ex-rzr for doing preliminary analysis of the issue
2011-04-12 21:48:54 -04:00
Slava Pestov
8c43a35b99
On Unix, link VM with GTK libraries instead of loading them dynamically
2011-02-27 20:01:54 -06:00
Slava Pestov
b0b5f3ac97
Remove bignum>float VM primitive, and use bignum/f to implement >float on bignums instead, for a slight accuracy gain. Also, bignum/f now has a more efficient post-scaling algorithm to break the circular dependency on bignum>float
2010-11-24 22:41:15 -08:00
Slava Pestov
9e1ff0c395
vm: fix 64-bit regression
2010-10-09 15:14:14 -07:00
Slava Pestov
f34fd74fb2
Fix win64 compile error
2010-10-09 16:03:46 -05:00
Slava Pestov
24a51f4874
vm: fix Config.windows
2010-10-02 23:50:48 -05:00
Doug Coleman
e7cd47f8b9
Revert previous patch; not simply a typo. Still broken on win64.
2010-09-29 20:49:37 -05:00
Doug Coleman
d67689aca9
Win64 Windows SDK hates int/cell type errors
2010-09-29 17:43:27 -05:00
Slava Pestov
e52023bbd5
vm: fix compiler warning
2010-09-27 20:37:37 -07:00
Slava Pestov
4877d32cb3
compiler: preliminary implementation of tracking derived pointers in GC maps
2010-09-27 20:12:44 -07:00
Slava Pestov
a6386f6e7d
vm/os-unix.cpp: remove dead code
2010-09-20 21:36:19 -07:00
Doug Coleman
43624e037c
Squashed commit of the following:
...
commit 197dbe9a6733775ac0ea19b3da4bd4dc3c85418c
Author: Doug Coleman <doug.coleman@gmail.com>
Date: Sat Sep 18 19:01:38 2010 -0500
Fix bootstrap, move privileges to windows.privileges
commit 521c622f8afb15bf42d263c738cb990560dc29cb
Author: Doug Coleman <doug.coleman@gmail.com>
Date: Sat Sep 18 18:26:30 2010 -0500
Hopefully fix bootstrap
commit eb3f22928b59758b9505430034044b5b94705da2
Author: Doug Coleman <doug.coleman@gmail.com>
Date: Sat Sep 18 18:19:05 2010 -0500
Remove wince from factor codebase
commit 619d6c99415f46208a7ede6a04b0ccda46b15360
Author: Doug Coleman <doug.coleman@gmail.com>
Date: Sat Sep 18 16:07:46 2010 -0500
Remove Windows CE from vm/
2010-09-19 19:13:25 -05:00
Slava Pestov
18e8c0af9c
vm: don't keep more than 10 unused contexts around to prevent address space wastage on low-budget operating systems like OpenBSD
2010-09-17 20:52:27 -07:00
Slava Pestov
05fc6ddad6
vm: a stack underflow inside a primitive could leave a data root in an uninitialized state; if allocating the thrown underflow error triggered a GC, the GC would visit a garbage pointer
2010-09-17 19:46:57 -07:00
Slava Pestov
e5921ab55b
vm/os-unix.cpp: set pipe file descriptors to close on exec
2010-09-15 22:20:24 -07:00
Slava Pestov
858c4c6343
vm: fep g command prints addresses in h hex for readability
2010-09-09 20:36:50 -07:00
Slava Pestov
713c7467dc
vm: don't need to save/restore FPU state when doing GC anymore, since we don't call nano_count() unless GC events are being recorded. If you want to record GC events with FP traps on, you're out of luck
2010-09-04 16:16:22 -05:00
Slava Pestov
09c74bda0b
vm: don't call nano_count() from the GC at all, unless GC event recording is on
2010-09-04 13:21:45 -07:00
Slava Pestov
3834436740
vm: increase default code heap size
2010-09-04 12:05:23 -07:00
Slava Pestov
0797875ef5
vm: fix crash when doing GC with profiling enabled
2010-09-03 21:54:40 -05:00
Slava Pestov
087b451dc1
Change how SIGPIPE is ignored, and add a unit test to io.launcher.unix to ensure that this ignoredness is not inherited by child processes
2010-09-02 22:11:45 -07:00
Slava Pestov
55ac874eb2
vm: Remove signal_callstack_top nonsense
2010-09-02 22:57:17 -05:00
Slava Pestov
6617eca683
Fix three problems discovered by running math.floats.env tests in a loop:
...
- Crash if allocating error triggers a GC from a signal/SEH handler
- Crash if GC runs with floating point traps enabled on Windows
- Floating point traps didn't prettyprint properly
2010-09-02 22:57:14 -05:00
Slava Pestov
d65d073144
vm: C I/O streams became unusable after a single EOF (reported by John Benediktsson)
2010-08-22 20:56:29 -07:00
Slava Pestov
f3dfae04ba
compiler: now that FFI has been deconcatenatized, we no longer need the special ##unary-float-function and ##binary-float-function fastpaths
2010-08-13 23:59:19 -07:00
Slava Pestov
88102c3ed5
vm: hard tabs, indent width 8
2010-08-02 20:50:34 -04:00
Slava Pestov
05ba77262a
Fix start-context-and-delete sub-primitive (reported by Sascha Matzke)
2010-08-02 20:28:23 -04:00
Joe Groff
92fd0bd8e3
vm/os-windows.cpp: fix compiler warnings/errors
2010-08-01 17:50:35 -07:00
Joe Groff
56702b868c
vm: remove some mixed use of stdio/iostream. when monotonic timer decreases, log old and new values
2010-08-01 16:14:20 -07:00
Slava Pestov
22100915a2
vm: fix compile error on Linux if inotify is not available (reported by Alec Barryman)
2010-07-31 18:33:53 -04:00
Slava Pestov
7323720441
vm: clean up main-windows-nt.cpp
2010-07-27 13:03:11 -04:00
Slava Pestov
7dad77b147
vm: fix alien-signed-1/2/4 primitives
2010-07-19 16:03:27 -04:00
Slava Pestov
0abdfbfc1b
compiler.cfg: open-code parameter boxing and unboxing for certain C types
2010-07-19 10:25:13 -04:00
Slava Pestov
333b9a34cc
compiler.cfg: nuke ##allot-byte-array instruction
2010-07-16 19:57:45 -04:00
Slava Pestov
bbcffab3fa
compiler.cfg: ##unbox-long-long can have multiple outputs now, clean up long long parameter passing code using this
2010-07-15 19:49:29 -04:00
Slava Pestov
69d0a3ce9b
Remove Cocoa exception handling support since it no longer works
2010-07-06 17:48:37 -04:00
Joe Groff
25595b7ddd
vm/safeseh.asm: make exception_handler proto declaration explicitly "proto c" so linking works properly with VS 2010 (reported by Doug Coleman)
2010-06-24 13:19:02 -07:00
Doug Coleman
78a67420a3
Merge branch 'master' of github.com:erg/factor
2010-06-17 11:12:25 -05:00
Slava Pestov
a8e2017020
vm: fix another compile warning on 32-bit Windows
2010-06-17 01:04:03 -05:00
Slava Pestov
59db2efac8
vm: fix compile warnings on Windows and add /WX to Nmakefile to report warnings as errors so that mason can catch these in the future
2010-06-17 01:48:39 -04:00
Doug Coleman
97c3450427
Remove system_micros from vm, implement gmt hook on windows
2010-06-16 23:39:16 -05:00
Doug Coleman
9d235bb6c7
Use nano_count instead of system_micros
2010-06-16 23:20:00 -05:00
Slava Pestov
c81610f7f3
vm: improved fingering technique
2010-06-16 19:08:58 -04:00
Slava Pestov
fb4de47abf
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
5e39764ccd
vm: have to be extra careful when messing with return addresses
2010-06-13 18:12:57 -04:00
Slava Pestov
d91524b98d
vm: context switching needs to scrub the return address
2010-06-12 19:54:31 -04:00
Slava Pestov
7e2d888767
vm: fix RT_HERE fixup on image load
2010-06-11 21:54:47 -04:00
Slava Pestov
9d0dbdebab
vm: fix typo
2010-06-11 20:08:52 -04:00
Slava Pestov
a08295d9b7
GC maps for more compact inline GC checks
2010-06-11 20:06:00 -04:00
Slava Pestov
bcf7a5e15e
Use ##local-allot to simplify longlong unboxing
2010-05-19 01:07:22 -04:00
Slava Pestov
35bd2bca06
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
fc166bce0a
vm: fix longlong accessors
2010-05-11 23:24:48 -04:00
Slava Pestov
b40cd01828
vm: fix compile error
2010-05-11 19:29:50 -04:00
Slava Pestov
5054bb4b25
FFI rewrite part 4: parameter and return value unboxing redesign
2010-05-11 19:11:44 -04:00
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
Joe Groff
a4b913c790
silence more msvc warnings
2010-05-05 22:32:45 -07:00
Joe Groff
6c881acbbd
quiet some data conversions warnings raised by msvc
2010-05-05 22:22:13 -07:00
Slava Pestov
7e8add87fe
More FFI cleanups
2010-05-05 01:13:45 -04:00
Slava Pestov
46864a2c92
vm: tweak inline_gc() for PowerPC
2010-05-04 06:52:30 -04:00
Slava Pestov
7f0469efef
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
90b945eaa0
compiler: add ##load-vector instruction to avoid wasting a temporary register on x86-32
2010-05-03 17:34:28 -04:00
Slava Pestov
be95003594
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
03bd160f08
Code cleanups
2010-05-03 17:34:17 -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
1d7089dc04
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
b621d1cd7c
vm: small cleanup
2010-04-13 21:24:42 -07: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
352e5c149a
vm: fix compiler warnings raised by CL
2010-04-12 18:12:55 -05:00
Slava Pestov
3a3b50327f
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
a80372cda6
vm: speed up nano-count primitive on Windows
2010-04-11 22:27:49 -05:00
Slava Pestov
650accf172
vm: speed up nano-count primitive on Mac OS X
2010-04-11 20:26:11 -07:00
Slava Pestov
73d020bb3c
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
0dc43a94bd
Merge remote branch 'origin/abi-symbols' into fastcall-madness
2010-04-10 00:10:33 -07:00
Slava Pestov
1f2f72de5e
vm: implement frame-based SEH for 64-bit Windows
2010-04-08 10:32:14 -07:00
Slava Pestov
57f75e93ca
vm: fix compile error under Cygwin
2010-04-06 16:30:41 -05:00
Joe Groff
3b4f8758b5
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
e3b8f3661d
vm: dllexport exception_handler for great justice
2010-04-05 15:48:09 -05:00
Slava Pestov
3b0bc02e11
Safe SEH is better than abstinence
2010-04-05 15:02:32 -05:00
Slava Pestov
a30740ef64
vm: fix callback heap code on 64-bit Windows
2010-04-04 17:46:36 -04:00
Slava Pestov
e70a5a8cfc
vm: fix compile error
2010-04-04 13:53:17 -05: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
4e058a0f33
vm: re-organize context structure
2010-04-02 15:42:29 -04:00
Slava Pestov
5509f1f71d
vm: use C++ exceptions instead of longjmp(), to make Windows crash more
2010-04-02 14:10:55 -04:00
Slava Pestov
5e61c327d6
vm: larger default callstack on PowerPC
2010-04-02 14:09:58 -04:00
Joe Groff
22bba39a75
add tests for struct returns from fastcall
2010-04-01 23:52:56 -07:00
Slava Pestov
6c4114d98c
vm: smaller default callstack size on OpenBSD
2010-04-02 00:36:45 -04:00
Slava Pestov
3904f963bc
vm: oops
2010-04-02 00:22:16 -04:00
Slava Pestov
295de47038
vm: don't try loading Factor VM DLL anymore
2010-04-02 00:03:26 -04:00
Slava Pestov
47f86898d7
vm: pre-allocate context alien
2010-04-02 00:02:21 -04:00
Joe Groff
ca9614e746
Merge branch 'master' into abi-symbols
2010-04-01 15:28:36 -07:00
Joe Groff
7bb82e0c1b
statically link factor executable to VM so dylib is only needed for embedding
2010-04-01 14:25:02 -07:00
Joe Groff
202b62add9
typos in ffi tests
2010-04-01 03:02:36 -07:00
Joe Groff
7296e27e23
add fastcall functions to ffi tests
2010-04-01 02:22:42 -07:00
Slava Pestov
2aada86da7
cpu.ppc: updating non-optimizing compiler backend for green threads (untested)
2010-03-31 15:19:14 -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
562d72ac66
vm: fix typos
2010-03-29 02:27:45 -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
7360cccdc5
vm: callstack errors were flipped
2010-03-29 01:53:30 -04:00
Doug Coleman
d915b1a401
vm: don't use sigaltstack() on OpenBSD because OpenBSD sucks
2010-03-28 18:26:39 -05:00
Slava Pestov
bdee695f37
vm: fix SEH on Windows
2010-03-28 17:57:47 -05:00
Slava Pestov
bce19559e2
vm: fix OpenBSD compilation
2010-03-28 12:53:01 -04:00
Slava Pestov
43844830c8
vm: fix compilation on FreeBSD
2010-03-28 12:52:16 -04:00
Slava Pestov
0fa2277bc3
vm: use sigaltstack to handle callstack overflow properly
2010-03-28 11:37:28 -04:00
Slava Pestov
54aaed0fc3
vm: fix factor_vm::dispatch_signal()
2010-03-28 08:29:10 -04:00
Slava Pestov
4fd804a3a8
vm: fix compilation on various Unices
2010-03-27 09:44:20 -04:00
Slava Pestov
09aa64baaf
vm: report callstack overflow
2010-03-27 07:45:11 -04:00
Slava Pestov
370718e9a4
vm: signal handling cleanup
2010-03-27 07:33:28 -04:00
Slava Pestov
ba61398145
vm: clean up TLS usage
2010-03-27 03:44:40 -04:00
Slava Pestov
dae10378fc
vm: fix ridiculous default callstack size
2010-03-27 03:35:10 -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
960e911c31
vm: another fix
2010-03-23 04:17:39 -04:00
Slava Pestov
cd4bd1bd96
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
562f717df8
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
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
Joe Groff
50b6e6f352
yay C89
2010-03-01 17:56:17 -08:00
Joe Groff
3db1955a93
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
584879fde7
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
c1e7a3ffc2
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
a98853ccdb
vm: change id of windows app icon resource to more standard "APPICON"
2010-02-15 11:26:56 -08: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
Slava Pestov
e481d5e71c
vm: disable silly nano-count workaround on Win64, fix some indentation issues
2010-02-06 00:45:29 -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
e6491d11ca
Allow setting errno instead of just clearing it
2010-02-03 17:20:24 -06:00
Doug Coleman
eb468d89aa
fix typo in os-windows.cpp
2010-02-03 16:03:22 -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
af47e5e8d8
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
dd0f2102ea
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
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
7fa61addcd
words: undefined error now contains the word in question
2010-02-03 23:11:23 +13:00
Slava Pestov
ef61bcad77
vm: fix ffi_test.h
2010-02-02 05:15:42 -05:00
Slava Pestov
83a2de6565
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
4506512a16
Merge up
2010-01-30 20:39:43 -08:00
Slava Pestov
6889b0b7f9
vm: 'become' primitive needs to update literal references in code blocks
2010-01-27 18:42:31 +13:00
Slava Pestov
0e0b750e7d
Update Win64 support
2010-01-25 15:39:34 +13:00
Doug Coleman
6bc071bfc1
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
5bb6cc9471
Fix image save on Windows
2010-01-22 12:59:36 -06: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
Doug Coleman
cf25ef8432
Tighten up libc file io code to avoid EINTR problems
2010-01-22 12:59:14 -06:00
Slava Pestov
952a0784a7
vm: remove vm-ptr primitive
2010-01-20 17:06:49 +13:00
Slava Pestov
711d78f511
vm: don't recompile lazy-jit-compile more than once
2010-01-20 02:48:31 +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
0c8dc1f00b
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
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
a3c7f1001d
vm: fix command line parsing on Windows
2010-01-17 00:05:52 -06:00
Doug Coleman
3f124ad6a6
Work around gcc bug on openbsd
2010-01-16 23:59:16 -06:00
Slava Pestov
402b096f5a
Remove generated file factor.res added by mistake
2010-01-17 18:00:26 +13:00
Slava Pestov
bdaccd75c6
Nmakefile: build factor.dll and link in resource file
2010-01-16 22:41:17 -06: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
7290d8cc1c
vm: fix compilation on 64-bit platforms
2010-01-14 02:18:49 +13:00
Slava Pestov
9f6f9966e8
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
cfadb5994a
PowerPC optimizing compiler backend fixes
2010-01-12 08:02:10 -06:00
Slava Pestov
80e64b8379
Store VM object in a register on x86-64
2010-01-11 01:20:32 +13:00
Slava Pestov
b7f4447723
Starting to update PowerPC backend for recent VM changes (untested)
2010-01-08 19:46:27 +13:00
Slava Pestov
7977905fa6
vm: remove some unused #defines
2010-01-07 21:33:19 +13:00
Slava Pestov
d7a8016776
Merge branch 'master' of git://factorcode.org/git/factor
2010-01-07 01:40:39 -05:00
Slava Pestov
f038f8eef8
vm: add VM_C_API declaration for factor_memcpy function
2010-01-07 01:40:20 -05:00
Slava Pestov
85432e99c3
Fix set-callstack primitive on Windows
2010-01-07 19:31:15 +13:00
Slava Pestov
e1125485fc
Remove .S support from Makefile
2010-01-07 18:12:33 +13:00
Slava Pestov
37643eb084
vm: remove asm.h
2010-01-07 18:05:31 +13:00
Slava Pestov
1e2c0327ee
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
caca156c31
vm: Remove some dead code
2010-01-07 13:54:22 +13:00
Slava Pestov
ded9a1eca9
vm: remove unnecessary call to compile_all_words() from primitive_become()
2010-01-07 13:49:29 +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
8a6c487a48
Merge branch 'master' of git://factorcode.org/git/factor
2010-01-03 23:21:31 +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
Doug Coleman
1329e0dcb3
remove warning
2009-12-28 10:02:36 -06:00
Doug Coleman
9c192fe170
Merge branch 'master' of git://factorcode.org/git/factor
2009-12-28 09:58:19 -06:00
Doug Coleman
667e871291
avoid integer division in nano_count on windows
2009-12-28 09:56:10 -06:00
Slava Pestov
d0c1c6b766
PowerPC: fix set-callstack primitive and start updating optimizing compiler backend for recent changes
2009-12-28 08:08:15 -06:00
Slava Pestov
faa9d942a2
Updating non-optimizing PowerPC backend for register variable removal (untested)
2009-12-28 12:40:45 +13:00
Slava Pestov
dee6910cfe
Merge branch 'eliminating_register_variables'
2009-12-27 01:29:53 +13:00
Slava Pestov
d5489b3ecd
Updating x86-64 port for global register variable removal
2009-12-27 01:17:42 +13:00
Slava Pestov
8b913f5fc6
Fix bug in c_to_factor
2009-12-26 15:24:46 +13:00
Slava Pestov
2d8b44e5b7
vm: code cleanup
2009-12-26 15:24:21 +13:00
Doug Coleman
92393c7df7
Add 0xe06d7363 to debugger.windows. Remove case 0xe06d7363 from SEH.
2009-12-23 14:04:52 -06:00
Slava Pestov
1453154376
vm: remove VM_ASM_API
2009-12-24 01:37:24 +13:00
Doug Coleman
d7f6c17a71
remove debug output
2009-12-22 14:39:30 -06:00
Doug Coleman
984a458394
try a different approach to fix the windows monotonic counter
2009-12-22 14:36:33 -06:00
Doug Coleman
c92eae83b8
Ignore yet another undocumented exception. Tricks of the trade, I guess.
2009-12-22 13:33:39 -06:00
Slava Pestov
583f999b1e
Merge branch 'master' into eliminating_register_variables
2009-12-22 15:50:15 +13:00
Slava Pestov
c6c351ffb0
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
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
08a81abb7f
Merge branch 'master' of git://factorcode.org/git/factor
2009-12-14 01:09:40 -06:00
Slava Pestov
0244c90414
vm: fep out if monotonic counter decreases
2009-12-14 01:09:04 -06:00
Doug Coleman
1b5a9b42c8
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
6ba4e7c8c4
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
f749d14e86
fix a couple of warnings on win64
2009-12-13 20:00:02 -06:00
Slava Pestov
ffe5fb62ca
vm/os-windows-nt.cpp: fix formatting
2009-12-13 16:52:59 -06:00
Slava Pestov
1994fd1c73
fix compiler warning on linux
2009-12-13 16:10:30 -06:00
Slava Pestov
ace18280e8
vm: OS X version ccheck was failing on 10.5.0
2009-12-11 19:31:19 -05:00
Slava Pestov
705360e1de
vm: grow the heap if a full collection doesn't reclaim enough space
2009-12-05 19:03:53 -05:00
Slava Pestov
20711a9bfd
vm: remove DEFPUSHPOP macro
2009-12-04 20:56:48 -05:00
Slava Pestov
cc7dea4ce1
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
f50e144288
vm: fix walker
2009-12-02 18:43:45 -05:00
Slava Pestov
9fcec9825c
vm: PowerPC fixes
2009-12-02 16:24:42 -06:00
Slava Pestov
f8d6f538fb
Fix typo in instruction_operand::load_value_masked()
2009-12-02 09:24:23 -05:00
Slava Pestov
174e2f5f3d
vm: fix instruction_operand::load_value() for PowerPC relocation classes
2009-12-02 09:20:33 -05:00
Slava Pestov
5180f80180
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
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
c04c15c52d
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
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
e33d4d265b
vm: fix some typos
2009-11-27 22:54:24 -06:00
Slava Pestov
3289186df6
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
77e4430c86
Merge branch 'master' of git://factorcode.org/git/factor into no_literal_table
2009-11-27 18:32:21 -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
a684164783
Fix non-tail recursive inline recursive compilation
2009-11-25 19:12:09 -06:00