Commit Graph

1426 Commits (2c67a5cd78e5dcffd7146e6fd0eb95f810a497e1)

Author SHA1 Message Date
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