Commit Graph

1922 Commits (revert-2214-feature-commandline-documentation)

Author SHA1 Message Date
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
Slava Pestov f81c8549f4 Make segment, context, data_heap, zone more object-oriented, and fix crash when calling undefined symbols 2009-09-25 21:17:20 -05:00
Slava Pestov c046ff4b23 vm: make heap data-type object-oriented 2009-09-25 20:32:00 -05:00
Slava Pestov d017a53227 Merge branch 'vm_cleanup' of git://github.com/phildawes/factor 2009-09-25 19:04:19 -05:00
Slava Pestov 11d716e8f7 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-25 18:23:36 -05:00
Slava Pestov b14c683b32 vm: ignore 'declare' calls in non-optimizing compiler 2009-09-25 18:08:21 -05:00
Slava Pestov 602776c885 vm: clean up os-unix.cpp 2009-09-25 18:08:00 -05:00
Phil Dawes 6b7717bf37 forwarding functions replaced with PRIMITIVE_FORWARD() macro 2009-09-25 20:43:01 +01:00
Phil Dawes e26bbbe9a0 removed VM_ASM_API_OVERFLOW (VM_ASM_API now regparm(3)) 2009-09-25 20:33:38 +01:00
Phil Dawes 4552e02624 made inline_gc a VM_C_API function 2009-09-25 18:29:07 +01:00
Phil Dawes f5c70d4ad7 make inline_gc regparm(3) and cleaned up %call-gc stack alignment 2009-09-24 21:45:56 +01:00
Phil Dawes 8173ef4710 fix c_to_factor stack alignment 2009-09-24 20:18:42 +01:00
Phil Dawes 6bb647d308 fix lazy_jit_compile to not abuse stack on x86.32 2009-09-24 19:59:37 +01:00
Slava Pestov 67a8bb7370 vm/cpu-x86.32.S: formatting fix 2009-09-24 06:25:01 -05:00
Slava Pestov cb497f009b Merge branch 'vm_cleanup' of git://github.com/phildawes/factor 2009-09-24 04:31:55 -05:00
Slava Pestov 576e725662 vm: Fix potential crash in <word> primitive if profiling is enabled 2009-09-24 04:31:11 -05:00
Phil Dawes 57840562f5 renamed myvm member variable to parent_vm 2009-09-24 08:16:57 +01:00
Phil Dawes 83b0769eef renamed factorvm to factor_vm 2009-09-24 08:16:52 +01:00
Phil Dawes 3b8292db8e bignum indentation and macro cleanup 2009-09-24 08:02:14 +01:00
Phil Dawes 35b2657f53 bignum indentation cleanup 2009-09-24 08:02:14 +01:00
Phil Dawes e566656e46 removed a bunch of superflous blank lines 2009-09-24 08:02:14 +01:00
Phil Dawes 46bab62689 misc cleanup 2009-09-24 08:02:14 +01:00
Phil Dawes d25fe552ab removed superflous whitspace lines 2009-09-24 08:02:14 +01:00
Phil Dawes e3ac531fdb renamed vmprim_ to primitive_ 2009-09-24 08:02:13 +01:00
Slava Pestov 9d90bdd439 Fix conflict 2009-09-20 23:18:07 -05:00
Slava Pestov ea44ea3522 math.vectors.simd: add saturated arithmetic operations 2009-09-20 23:16:02 -05:00
Phil Dawes d2afb4b344 put mach call_fault_handler in the vm 2009-09-16 08:22:18 +01:00
Phil Dawes 2cf2dab48e fpe signals working on unix again 2009-09-16 08:22:18 +01:00
Phil Dawes 8049b441c2 imul clobbers arg2 on x86.64, so stashing vm ptr on the stack 2009-09-16 08:22:18 +01:00
Phil Dawes a8d1e5187d Added -DREENTRANT option to Makefile
Also renamed FACTOR_MULTITHREADED to FACTOR_REENTRANT
2009-09-16 08:22:18 +01:00
Phil Dawes 617a7cbd65 Added more init code to vm constructor.
Also removed dummy variables file as have fixed that problem now
2009-09-16 08:22:18 +01:00
Phil Dawes c7b7517f36 small x86 asm cleanup 2009-09-16 08:22:17 +01:00
Phil Dawes 8a65f35c31 vm passed in primitives as arg0 for x86.64 2009-09-16 08:22:17 +01:00
Phil Dawes 480a15c2c3 Added vm passing to inline_cache_miss x86.32 asm 2009-09-16 08:22:17 +01:00
Phil Dawes 3343723ee3 Don't return functions returning void. -O3 seems to optimize them out! 2009-09-16 08:22:17 +01:00
Phil Dawes deb7af70bb asm math functions pass vm ptr to overflow function in 3rd arg (X86.32) 2009-09-16 08:22:17 +01:00
Phil Dawes 3ecff2c0eb fixed bug where vm_char being treated as 1byte type 2009-09-16 08:22:17 +01:00
Phil Dawes 34ce334317 Added data constructor to initialize bools in factorvmdata struct 2009-09-16 08:22:17 +01:00
Phil Dawes 67ac514a3b Added vm ptr to math overflow functions 2009-09-16 08:22:17 +01:00
Phil Dawes b02944c6d5 moved signal handlers into vm object 2009-09-16 08:22:16 +01:00
Phil Dawes eee1de23c8 removed debugging 2009-09-16 08:22:16 +01:00
Phil Dawes e8d1612e8e Split data out into separate vm-data struct 2009-09-16 08:22:16 +01:00
Phil Dawes b07550620f Dev checkpoint 2009-09-16 08:20:51 +01:00
Phil Dawes 9bf6f97e35 Switched on singleton flag 2009-09-16 08:20:51 +01:00
Phil Dawes 9e460f6dec removed vm ptr from mach_signal and some other places 2009-09-16 08:20:51 +01:00
Phil Dawes 544bc3cd33 removed vm ptr from os-macosx.mm 2009-09-16 08:20:51 +01:00
Phil Dawes e49fa4109d added FACTOR_MULTITHREADED_TLS option 2009-09-16 08:20:51 +01:00
Phil Dawes f4af39b60e thread_id is a pthread_t on unix 2009-09-16 08:20:51 +01:00
Phil Dawes b1c68d92b7 added threadsafe defines. Dunno if they do much 2009-09-16 08:20:51 +01:00
Phil Dawes 3a3154797c fixed stupid signal handler bug 2009-09-16 08:20:50 +01:00
Phil Dawes 2e50da6beb added vm-ptr primitive 2009-09-16 08:20:50 +01:00
Phil Dawes 3345922330 quick test vocab for mt stuff 2009-09-16 08:20:50 +01:00
Phil Dawes ca16daa4b2 cleaned up code a bit, added multithreaded mode flags 2009-09-16 08:20:50 +01:00
Phil Dawes fa6d8d239b removed vm singleton usage from unix stuff 2009-09-16 08:20:49 +01:00
Phil Dawes 3c139593c5 moved the thread stuff around a bit 2009-09-16 08:20:49 +01:00
Phil Dawes 1456fb3c97 removed vm ptrs from unix code (still in signal handlers tho) 2009-09-16 08:20:10 +01:00
Phil Dawes 784b8d16ae moved utility functions and fatal_error out of vm struct since doesn't need state 2009-09-16 08:20:10 +01:00
Phil Dawes b02c602a89 added vm passing to some alien/boxing functions and added some vm asserts 2009-09-16 08:20:10 +01:00
Phil Dawes 5cd2fbb564 vm ptr passed to lazy_jit_compile on x86.64 2009-09-16 08:20:10 +01:00
Phil Dawes 334f4c3455 overflow functions now retrieving their vm ptr from above ds stack 2009-09-16 08:20:09 +01:00
Phil Dawes be1b079eb5 Primitives now pass vm ptr on 64bit x86 2009-09-16 08:20:09 +01:00
Phil Dawes 6ddd3c654e fixed up linux64 bootstrap (single threaded) 2009-09-16 08:20:09 +01:00
Phil Dawes aa005c948f win32 main starts factorvm in new thread 2009-09-16 08:20:09 +01:00
Phil Dawes 5c2a28173a Start windows factor in a spawned thread (for testing) 2009-09-16 08:20:09 +01:00
Phil Dawes 9cac5e8aa9 added lookup_vm and removed last usage of vm from windows code 2009-09-16 08:20:09 +01:00
Phil Dawes 12ca7bdc57 added factorvm ptrs to the rest of alien functions.
(Left commented debug lines to remind me that these haven't been tested yet, and some are osx specific)
2009-09-16 08:17:27 +01:00
Phil Dawes e98f168a11 print_native_string doesn't need singleton ptr 2009-09-16 08:17:27 +01:00
Phil Dawes e05f91f3a8 cleaning up stray vm singleton usage 2009-09-16 08:17:27 +01:00
Phil Dawes e2d246f371 removed most global functions from factor.cpp 2009-09-16 08:17:27 +01:00
Phil Dawes 20ef4200fb removed some error vm-> functions 2009-09-16 08:17:27 +01:00
Phil Dawes 700e03a6a6 removed some vm-> forwarding functions 2009-09-16 08:17:26 +01:00
Phil Dawes 2f3cd4d23d removed some vm-> pointers 2009-09-16 08:17:26 +01:00
Phil Dawes 005549ba43 vm pointer passed to nest_stacks and unnest_stacks (win32) 2009-09-16 08:17:26 +01:00
Phil Dawes cdb6304fef Dev checkpoint 2009-09-16 08:17:26 +01:00
Phil Dawes 58190c06dc passing ptr in boolean boxing and save_callstack_bottom 2009-09-16 08:17:26 +01:00
Phil Dawes 0a15e20e12 Added basic win32 start-thread support 2009-09-16 08:17:26 +01:00
Phil Dawes fa2dccd6d3 vm passed in box_alien and alien_offset (win32) 2009-09-16 08:16:33 +01:00
Phil Dawes 7759b89de9 removed all vm-> singleton accesses from inlineimpls 2009-09-16 08:16:33 +01:00
Phil Dawes a39bf2f8e2 converted box_* float functions to use vm (x86 win32) 2009-09-16 08:16:33 +01:00
Phil Dawes 81106f9e20 converted box_* integer functions to use vm (x86 windows) 2009-09-16 08:16:33 +01:00
Phil Dawes 199fba7a99 converted box_* integer functions to use vm (x86 windows) 2009-09-16 08:16:33 +01:00
Phil Dawes ff54a57eb3 added code to pass vm ptr to some unboxers 2009-09-16 08:16:32 +01:00
Phil Dawes c5119218c5 moved gc_locals accessors into vm 2009-09-16 08:16:32 +01:00
Phil Dawes 65a264aa1f turned errno() methods back into functions since they should already be thread safe 2009-09-16 08:16:32 +01:00
Phil Dawes ff8f2b10ec fixed up getenv compiler intrinsic to use vm struct userenv 2009-09-16 08:16:32 +01:00
Phil Dawes 3b3ed501c7 added padding to align userenv to an 8byte boundary 2009-09-16 08:16:32 +01:00
Phil Dawes ef16c4be66 moved userenv into vm in C code (DOESNT BOOTSTRAP YET!!!) 2009-09-16 08:16:32 +01:00
Phil Dawes a4a4439fc5 got debug compiles working again 2009-09-16 08:16:32 +01:00
Phil Dawes 43787e2664 moved stack_traces_p into the vm 2009-09-16 08:16:31 +01:00
Phil Dawes 5bb04857bf moved cards_offset and decks_offset into vm struct (for x86) 2009-09-16 08:16:31 +01:00
Phil Dawes c6d855d494 moved allot_markers_offset variable into vm struct 2009-09-16 08:16:31 +01:00
Phil Dawes c010afc345 nursery global variable moved into vm 2009-09-16 08:16:31 +01:00
Phil Dawes 9a37b6abb6 moved stack_chain into vm struct 2009-09-16 08:16:31 +01:00
Phil Dawes 25bbca2f66 removed save_stacks global function 2009-09-16 08:16:30 +01:00
Phil Dawes 465f06ebc2 throw_impl now forwards the vm ptr 2009-09-16 08:16:30 +01:00
Phil Dawes 4afc16e95b passing vm ptr to lazy_jit_compile mostly working 2009-09-16 08:16:30 +01:00
Phil Dawes 6a193bb0d5 Added %vm-invoke to pass vm ptr to vm functions (x86.32 only, otherwise uses singleton vm) 2009-09-16 08:16:30 +01:00
Phil Dawes 57011aed51 vm ptr passed to primitives on X86.32 (other cpus still use singleton vm ptr) 2009-09-16 08:16:30 +01:00
Phil Dawes a5f24c8fb9 added VM relocation type 2009-09-16 08:16:30 +01:00
Phil Dawes d48dffcfa0 moved os-windows-nt functions into the vm 2009-09-16 08:16:30 +01:00
Phil Dawes 01ecb11635 Dev checkpoint 2009-09-16 08:16:29 +01:00
Phil Dawes 7cebe088a1 moved some os-windows functions into the vm 2009-09-16 08:16:29 +01:00
Phil Dawes aa58b54c2e moved align_page into vm 2009-09-16 08:16:29 +01:00
Phil Dawes 7592a424e8 Dev checkpoint 2009-09-16 08:16:29 +01:00
Phil Dawes 97addbaf7a got os-macosx.mm to compile 2009-09-16 08:16:29 +01:00
Phil Dawes 75a3db3bfb Fixed typo from upstream 2009-09-16 08:16:29 +01:00
Phil Dawes d3b5321b6e removed some global functions from errors.cpp 2009-09-16 08:16:29 +01:00
Phil Dawes 390712b00a removed some global functions from utilities.cpp 2009-09-16 08:16:29 +01:00
Phil Dawes 1c656e1bac removed some global functions from inline_cache.cpp 2009-09-16 08:16:28 +01:00
Phil Dawes 6234b7957f removed some global functions from dispatch.cpp 2009-09-16 08:16:28 +01:00
Phil Dawes 0de0d5f256 removed some global functions from quotations.cpp 2009-09-16 08:16:28 +01:00
Phil Dawes 7f70b6320c removed some global functions from alien.cpp 2009-09-16 08:16:28 +01:00
Phil Dawes 551a800d2f removed some global functions from callstack.cpp 2009-09-16 08:16:28 +01:00
Phil Dawes 1887a16ca3 removed some global functions from image.cpp 2009-09-16 08:16:28 +01:00
Phil Dawes 0397f92569 removed some global functions from io.cpp 2009-09-16 08:16:28 +01:00
Phil Dawes fc5c51e2cd removed some global functions from math.cpp 2009-09-16 08:16:28 +01:00
Phil Dawes 2dba15535f removed global functions from words.cpp 2009-09-16 08:16:28 +01:00
Phil Dawes 10bf5ca17c removed global functions from byte_arrays.cpp and tuples.cpp 2009-09-16 08:16:27 +01:00
Phil Dawes 9e2d40a228 removed global functions from strings.cpp 2009-09-16 08:16:27 +01:00
Phil Dawes d21b1b2e1e removed global functions from arrays.cpp 2009-09-16 08:16:27 +01:00
Phil Dawes 5a0c4d18aa removed global functions from debug.cpp 2009-09-16 08:16:27 +01:00
Phil Dawes 959da30f05 removed global functions from code_block.cpp 2009-09-16 08:16:27 +01:00
Phil Dawes 32eace1a11 removed global functions from bignum.cpp 2009-09-16 08:16:27 +01:00
Phil Dawes 100c26c38f removed global functions from profiler 2009-09-16 08:16:27 +01:00
Phil Dawes afe1cf0c73 removed some global functions from code_heap 2009-09-16 08:16:27 +01:00
Phil Dawes 00087e6814 removed global functions from code_gc 2009-09-16 08:16:26 +01:00
Phil Dawes 39dc71e612 removed global functions from data_gc 2009-09-16 08:16:26 +01:00
Phil Dawes b2f52ed109 removed non-primitive global functions from data_heap 2009-09-16 08:16:26 +01:00
Phil Dawes 7a20e1648c Dev checkpoint 2009-09-16 08:16:26 +01:00
Phil Dawes 82e1ea7110 vm ptr passed to untag_check 2009-09-16 08:16:26 +01:00
Phil Dawes e2993558a8 moved tagged template code back into tagged.hpp header 2009-09-16 08:16:26 +01:00
Phil Dawes e08a6e21cb split the moved inline stuff into separate header file 2009-09-16 08:16:26 +01:00
Phil Dawes e4f92cdbf2 moved tagged.hpp templates to vm.hpp 2009-09-16 08:16:26 +01:00
Phil Dawes 75c81af691 moved more math.hpp inline functions to vm 2009-09-16 08:16:25 +01:00
Phil Dawes a66cf7e609 removed stub function from run 2009-09-16 08:16:25 +01:00
Phil Dawes 2e81b174a7 removed some stub functions from contexts 2009-09-16 08:16:25 +01:00
Phil Dawes d093ff766f updated function ptr calls (iterators etc..) to take a vm parameter 2009-09-16 08:16:25 +01:00
Phil Dawes d5da6a3d58 Dev checkpoint 2009-09-16 08:16:25 +01:00
Phil Dawes baaf71eddc Dev checkpoint 2009-09-16 08:16:25 +01:00
Phil Dawes 93c665c653 Dev checkpoint 2009-09-16 08:16:25 +01:00
Phil Dawes 8fa607e9a9 Dev checkpoint 2009-09-16 08:16:25 +01:00
Phil Dawes efa974f025 moved global state from math into vm 2009-09-16 08:16:24 +01:00
Phil Dawes 839491a828 moved global state from inline_cache into vm 2009-09-16 08:16:24 +01:00
Phil Dawes 498b1917dc moved global state from dispatch into vm 2009-09-16 08:16:24 +01:00
Phil Dawes c506abc6cd moved global state from debug into vm 2009-09-16 08:16:24 +01:00
Phil Dawes 396eeeba34 moved global state from code_heap into vm 2009-09-16 08:16:24 +01:00
Phil Dawes 221c0ac5c8 moved global state from data_heap into vm 2009-09-16 08:16:24 +01:00
Phil Dawes 3025cef1c6 moved global state from data_gc into vm 2009-09-16 08:16:24 +01:00
Phil Dawes 80716a1b6e moved global state from contexts and run into vm
Also renamed template type from T to TYPE to prevent clash with vm::T (true)
2009-09-16 08:16:24 +01:00
Phil Dawes ecfd9a6075 reordered master to untangle dependency chain a bit 2009-09-16 08:16:24 +01:00
Phil Dawes fb9f9ac3d3 moved callstack.hpp inline functions to vm.hpp 2009-09-16 08:16:23 +01:00
Phil Dawes 9e23e41267 moved math.hpp inline functions to vm.hpp 2009-09-16 08:16:23 +01:00
Phil Dawes a249b484c4 moved byte_arrays.hpp inline functions to vm.hpp 2009-09-16 08:16:23 +01:00
Phil Dawes 209755e2de moved arrays.hpp inline functions to vm.hpp 2009-09-16 08:16:23 +01:00
Phil Dawes 2e129dfc45 moved generic_arrays inline functions to vm.hpp 2009-09-16 08:16:23 +01:00
Phil Dawes 4dabd186c9 moved data_gc and local_roots inline functions to vm.hpp 2009-09-16 08:16:23 +01:00
Phil Dawes 31905b68a7 moved write_barrier inline function impls to vm.hpp 2009-09-16 08:16:23 +01:00
Phil Dawes a6c3c1e7d2 moved callstack.hpp functions to vm 2009-09-16 08:16:23 +01:00
Phil Dawes ae5c0fbfb2 moved math.hpp functions to vm 2009-09-16 08:16:22 +01:00
Phil Dawes 33ecaa5010 moved arrays.hpp functions to vm 2009-09-16 08:16:22 +01:00
Phil Dawes 625380c25c moved generic_array.hpp functions to vm 2009-09-16 08:16:22 +01:00
Phil Dawes b1189dc4f1 moved write_barrier functions to vm 2009-09-16 08:16:22 +01:00
Phil Dawes be3a9f7f66 moved data_gc templates and inline functions to vm 2009-09-16 08:16:22 +01:00
Phil Dawes 1b64155998 moved reallot_array into vm 2009-09-16 08:16:22 +01:00
Phil Dawes e678f6a681 added vm member to gc_bignum 2009-09-16 08:16:22 +01:00
Phil Dawes a2f14b5a6d added vm member to gc_root and growable arrays 2009-09-16 08:16:22 +01:00
Phil Dawes 54b3c1ea88 added vm member to jit classes 2009-09-16 08:16:21 +01:00
Phil Dawes 386dafe747 moved local roots state to vm, shuffled includes around 2009-09-16 08:16:21 +01:00
Phil Dawes 8fea98ad7a factorvm initialised globally 2009-09-16 08:16:21 +01:00
Phil Dawes a826496a71 moved utilities.cpp functions to vm 2009-09-16 08:16:21 +01:00
Phil Dawes f88eaa0df3 moved factor.cpp functions to vm 2009-09-16 08:16:21 +01:00
Phil Dawes 5980165829 moved inline_cache functions to vm 2009-09-16 08:16:21 +01:00
Phil Dawes c018372cd3 moved dispatch functions to vm 2009-09-16 08:16:21 +01:00
Phil Dawes 2eca2ddeaf moved quotations functions to vm 2009-09-16 08:16:21 +01:00
Phil Dawes 28620619e9 moved alien functions to vm 2009-09-16 08:16:21 +01:00
Phil Dawes 1bba717b36 moved image functions to vm 2009-09-16 08:16:20 +01:00
Phil Dawes ee07c0b4e5 moved code_heap functions to vm 2009-09-16 08:16:20 +01:00
Phil Dawes 0097e76a82 moved code_block functions to vm 2009-09-16 08:16:20 +01:00
Phil Dawes fdabc9a5d8 moved code_gc functions to vm 2009-09-16 08:16:20 +01:00
Phil Dawes 062c56f94b moved io functions to vm 2009-09-16 08:16:20 +01:00
Phil Dawes 10e5dc9b3c moved math functions to vm 2009-09-16 08:16:20 +01:00
Phil Dawes 552b9ecd81 Dev checkpoint 2009-09-16 08:16:20 +01:00
Phil Dawes 4f4c53c822 moved words functions to vm 2009-09-16 08:16:20 +01:00
Phil Dawes dbbc9bb2b1 added tuples fns to vm 2009-09-16 08:16:19 +01:00
Phil Dawes fa46b90197 added byte_arrays fns to vm 2009-09-16 08:16:19 +01:00
Phil Dawes 25d0bb756f added boolean fns to vm 2009-09-16 08:16:19 +01:00
Phil Dawes 0f2a89cfbd moved strings fns to vm 2009-09-16 08:16:19 +01:00
Phil Dawes 72098c5f6a moved arrays fns into vm 2009-09-16 08:16:19 +01:00
Phil Dawes 13e0ae6d97 moved debug functions into vm struct 2009-09-16 08:16:19 +01:00
Phil Dawes 64c2d81306 moved data_gc fns over to vm struct 2009-09-16 08:16:19 +01:00
Phil Dawes 9f6f7adaba moved data_heap fns to vm struct 2009-09-16 08:16:19 +01:00
Phil Dawes 1a87f3bb5f moved bignum functions to vm 2009-09-16 08:16:18 +01:00
Phil Dawes a6fc19f4b0 Dev checkpoint 2009-09-16 08:16:18 +01:00
Phil Dawes 149af514e6 Dev checkpoint 2009-09-16 08:16:18 +01:00
Phil Dawes 8426e2f877 Dev checkpoint 2009-09-16 08:16:18 +01:00
Phil Dawes 10901e7c37 moved errors.cpp functions to vm 2009-09-16 08:16:18 +01:00
Phil Dawes aa01f6b748 moved profiling fns into vm 2009-09-16 08:16:18 +01:00
Phil Dawes 110f925245 move functions from run.cpp into vm 2009-09-16 08:16:18 +01:00
Phil Dawes 88084a66ac moved contexts functions into vm 2009-09-16 08:16:18 +01:00
Phil Dawes adf2529451 added vm singleton 2009-09-16 08:16:18 +01:00
Phil Dawes d8ea82d8e8 added stub PRIMITIVE_GETVM macro 2009-09-16 08:16:17 +01:00
Phil Dawes caefc7aff9 Empty vm struct 2009-09-16 08:16:17 +01:00
Slava Pestov 3551294fd4 vm: update Config.netbsd for NetBSD 5.0 2009-09-15 00:22:19 -05:00
Joe Groff 77f0fbf497 missed a few PPC status bits that needed clearing 2009-09-14 15:17:36 -05:00
Joe Groff 89ce13d4d4 linux 32 typo 2009-09-14 13:21:46 -05:00
Joe Groff 32be55fa68 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-14 12:30:24 -05:00
Joe Groff b77d9d2960 more secret sauce to tease mxcsr out of linux-x86.32 ucontext 2009-09-14 12:30:10 -05:00
Joe Groff c1bc5f22e4 use secret sauce to clear MXCSR in win32 context, and handle secret STATUS_FLOAT_MULTIPLE_* SEH codes raised by SSE traps 2009-09-14 12:02:02 -05:00
Joe Groff 578c977a7e more freebsd compilation fixes 2009-09-14 09:56:38 -05:00
Joe Groff 6ae07e8a08 fix compilation on linux 32 2009-09-14 09:48:32 -05:00
Slava Pestov 448b89f585 vm: More indentation fixes 2009-09-14 03:14:48 -05:00
Slava Pestov 83c992173e vm: fix indentation in Joe's changes 2009-09-14 03:09:03 -05:00
Joe Groff 198874aea8 fix compilation on freebsd 2009-09-14 00:00:01 -05:00
Joe Groff fb43ae2daf save the FP status out of the signal context and use it as part of the fp trap factor exception. clear the FP status before continuing after an exception 2009-09-13 23:39:12 -05:00
Joe Groff 38ec77f9bd Merge branch 'master' of git://factorcode.org/git/factor 2009-09-13 14:42:28 -05:00
Joe Groff b469dc29fa save vector registers, save control register, and enable denormals before calling factor in powerpc c_to_factor() 2009-09-13 13:18:24 -05:00
Slava Pestov d14f227905 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-13 00:09:09 -05:00
Slava Pestov 32b95c2cdf math: add unordered comparison operators u< u<= u> u>= which behave exactly like < <= > >= except no floating point exceptions are set if one or both inputs are NaNs; also add efficient intrinsic for unordered? predicate, and fix propagation type functions for abs, absq, and bitnot 2009-09-12 22:20:13 -05:00
Joe Groff 53e23de104 set altivec denormal flag when with-denormal-mode is used 2009-09-12 20:39:41 -05:00
Slava Pestov 9ccf5811b3 vm: fix fp_trap_error() so that it can work properly in signal handlers 2009-09-12 18:15:16 -05:00
Slava Pestov a456f79f9c cpu-x86: clear the x87 stack when rewinding; fixes math.floats.env failures on Linux 2009-09-12 16:59:30 -04:00
Slava Pestov 13464d9403 Fix debug build 2009-09-11 20:33:38 -05:00
Joe Groff 6fa4a6a23b handle floating-point exceptions on windows 2009-09-10 16:10:25 -05:00
Joe Groff c2cd1714fa fix set_x87_env assembly code for x86.32 2009-09-08 23:15:49 -05:00
Joe Groff 93f5209213 fix ppc assembler syntax 2009-09-08 21:01:33 -05:00
Joe Groff 2ad9459b85 Merge branch 'master' of git://factorcode.org/git/factor 2009-09-08 15:37:32 -05:00
Joe Groff 0ec342a1c5 factor out x86 and ppc backends for math.floats.env; update both x87 and SSE state on x86 2009-09-08 15:36:53 -05:00
Slava Pestov 81c4670619 VM: use an std::vector instead of a fixed-size buffer for GC roots 2009-09-08 14:21:09 -05:00
Slava Pestov 109cde9bd6 vm/cpu-x86.S: don't detect SSSE3, SSE4.1 or SSE4.2 yet 2009-09-08 14:06:19 -05:00
Joe Groff 7ba71a524e Send FP trap signals to Factor as a different vm-error type 2009-09-06 08:44:25 -05:00
Joe Groff 36ec53a968 math.floats.env vocab with words to control the floating-point environment
add some functions to the VM to grab and set the fpu control register
2009-09-05 19:48:13 -05:00
Slava Pestov 906a0d212a Detect SSE version and enable the correct set of SIMD intrinsics 2009-09-03 03:28:38 -05:00
Joe Groff 07ab5f006d on OS X, rather than define _XOPEN_SOURCE, use the non-deprecated sys/ucontext.h header instead 2009-08-26 16:44:25 -05:00
Joe Groff 2a56ba0d2d add -D_XOPEN_SOURCE flag to suppress ucontext deprecation errors on snow leopard. add -m32 flag when compiling 32-bit because snow leopard gcc defaults to x86_64 2009-08-26 16:29:55 -05:00
Philipp Brüschweiler 230061783a misc small documentation fixes, some fixes for factor.vim, changed permissions of vm/* to 644 2009-08-10 21:33:07 +02:00
Slava Pestov 46688f960d image.cpp: don't try to make code heap bigger than p->code_size since on PPC this will cause crashes if the image has a code heap of exactly 32Mb 2009-07-31 23:23:29 -05:00
Slava Pestov 91e5c05f40 debug.cpp: fep now prints return addresses in call stack dump 2009-07-29 19:28:58 -05:00
Slava Pestov 3fb4fc1bde Improve code generation for shift word: add intrinsics for fixnum-shift-fast in the case where the shift count is not constant, transform 1 swap shift into a more overflow check with open-coded fast case, transform bitand into fixnum-bitand in more cases 2009-07-16 23:50:48 -05:00
Slava Pestov baff251d1e alien.libraries: add remove-library word, fix dlclose and dll-valid? VM primitives 2009-07-09 06:51:31 -05:00
Slava Pestov 2d231f066a GC checks now save and restore registers 2009-06-02 18:23:47 -05:00
Slava Pestov 9e987e8642 Merge branch 'master' into global_optimization 2009-06-01 03:12:32 -05:00
Slava Pestov b389dcf441 Redo compiler.codegen.fixup and get %dispatch to work 2009-06-01 02:32:36 -05:00
Slava Pestov fc152ef210 Various improvements aimed at getting local optimization regressions fixed:
- Rename _gc to ##gc
- Absolute labels are now supported
- Generate _dispatch-label
2009-05-31 23:28:08 -05:00
Slava Pestov faaccceac6 Fix rdtsc on Windows 2009-05-31 15:16:40 -05:00
Slava Pestov 617e57fc75 cpu.x86.features: add RDTSC support. This is a new vocabulary with words: sse2? instruction-counter count-instructions 2009-05-31 15:02:14 -05:00
Slava Pestov 6b2192bde0 Fix compile error on GCC 4.x 2009-05-20 20:01:21 -04:00
Slava Pestov 610b276c86 callstack>array primitive was not GC safe 2009-05-20 18:52:21 -05:00
Slava Pestov efde9b8d10 callstack>array was keeping an uninitialized array around across potential GCs; add more assertions 2009-05-17 18:18:07 -05:00
Slava Pestov 1e6227fe68 os-linux.cpp: inotify wrappers should be VM_C_API 2009-05-13 03:49:51 -05:00
Slava Pestov 9ef162e2ef More VM cleanups 2009-05-13 01:08:16 -05:00
Slava Pestov 69cb3dee5e Fix FEP if there are too many words in the image, clean up some VM code 2009-05-13 00:58:54 -05:00
Slava Pestov 3987468ff3 Merge branch 'master' of git://factorcode.org/git/factor 2009-05-12 16:23:26 -05:00
Slava Pestov e0f4b18709 Link VM with OpenSSL on NetBSD otherwise it can't find some symbols 2009-05-12 16:23:09 -05:00
Slava Pestov 6e08e29a3a Remove compiled slot from quotations since its not needed 2009-05-12 03:09:15 -05:00
Slava Pestov aa3aa715be Slightly more space-efficient dispatch table representation 2009-05-09 20:24:32 -05:00
Slava Pestov 04a70da513 Fix compile error in cpu-ppc.hpp 2009-05-08 17:41:22 -05:00
Slava Pestov 367724f41e Fix Windows compile error 2009-05-08 15:23:44 -05:00
Slava Pestov ace084b633 Need to include unistd.h 2009-05-08 15:15:10 -05:00
Slava Pestov 3bf8134476 VM cleanup: replace some #defines with constants and inline functions 2009-05-08 15:05:55 -05:00
Slava Pestov 5c4bb80bc3 Update PowerPC %jump and %dispatch-label, and add PIC-related functions to cpu-ppc.hpp 2009-05-07 19:47:38 -05:00
Slava Pestov 3591f6c684 Count megamorphic cache hits 2009-05-07 14:26:08 -05:00
Slava Pestov d7b40d72a0 Code cleanups 2009-05-07 12:33:31 -05:00
Slava Pestov 318552ba60 Fix tail call PICs on x86-64 2009-05-06 22:44:30 -05:00
Slava Pestov 4915e1ced7 Clean up bootstrap.image, and implement new calling convention for tail calls; tail call sites now have PICs 2009-05-06 22:04:01 -05:00
Slava Pestov 12a34d81f7 JIT now supports multiple relocations per code template. This simplifies non-optimizing compiler backends 2009-05-06 20:04:49 -05:00
Slava Pestov 581d017b46 Working on inline caching for tail call sites 2009-05-06 19:22:22 -05:00
Slava Pestov 49409b4d8c Working on PowerPC backend 2009-05-06 15:39:03 -05:00
Slava Pestov 867ff51b83 Remove some unused constants and update an obsolete comment 2009-05-06 14:57:17 -05:00
Slava Pestov a961e17ef1 Add new RC_ABSOLUTE_PPC_2 relocation type 2009-05-05 20:56:23 -05:00
Slava Pestov 58d0e17936 Fix bool type; its actually 1 byte not 4 in structs. Bug reported by jedahu 2009-05-05 18:37:40 -05:00
Slava Pestov be207afe9a Fix VM compile error 2009-05-05 16:19:13 -05:00
Slava Pestov 8d5d1b8bb5 Fix VM code to export the right symbols on Windows 2009-05-05 15:55:41 -05:00
Slava Pestov 3295c54bff Remove debug messages from VM 2009-05-05 14:27:22 -05:00
Slava Pestov 56597b65f4 VM now compiles with GCC 3.4 on Windows 2009-05-05 14:17:02 -05:00
unknown cc9ac345fa Merge branch 'master' of git://factorcode.org/git/factor 2009-05-05 13:03:43 -05:00
unknown 6e26c7b554 Fixing compile errors on Windows 2009-05-05 13:03:24 -05:00
Slava Pestov 53db9d737a Change (void) to () 2009-05-05 11:33:35 -05:00
Slava Pestov 786b9096e2 Store forwarding table off to the side instead of in the code block; saves one cell per code block 2009-05-05 11:07:20 -05:00
Slava Pestov 12de56c41e Fix botched replace all in VM source, clean up image saving code, and fix save-image-and-exit to actually call (save-image-and-exit) instead of (save-image) 2009-05-05 10:29:22 -05:00
Slava Pestov 029d93a838 Make walker work better with call( and breakpoints which are nested inside combinators 2009-05-05 09:12:32 -05:00
Slava Pestov 0682c3da39 Some VM fixes 2009-05-04 15:11:31 -05:00
sheeple dbc245729c use eg++ on openbsd 2009-05-04 11:48:46 -05:00
Slava Pestov fb5b48c71a Fix some test failures 2009-05-04 09:44:26 -05:00
Slava Pestov fb9086d191 Merge branch 'master' of git://factorcode.org/git/factor 2009-05-04 08:31:56 -05:00
Slava Pestov f812f70473 Merge branch 'master' of git://factorcode.org/git/factor 2009-05-04 09:08:46 -04:00
Slava Pestov 7a80307b52 Fix problem caused by different behavior of GCC 4.0 -vs- 4.3 2009-05-04 09:08:33 -04:00
Samuel Tardieu f3a9234422 Make the primitives array const 2009-05-04 14:45:15 +02:00
Samuel Tardieu 1b0db9623b Do not lower primitives to "void*" to get better compiler checking 2009-05-04 14:32:09 +02:00
Slava Pestov a9782a2e64 Merge branch 'master' of git://factorcode.org/git/factor 2009-05-04 07:19:40 -05:00
Slava Pestov 708c8b50ff Config.freebsd fix 2009-05-04 07:19:32 -05:00
Slava Pestov af5a7b537e Attempt to fix gcc 4.5.0 compile error 2009-05-04 07:11:00 -05:00
Slava Pestov 2bfde0250e Fixing some build issues on Linux with GCC 4.3 2009-05-04 08:00:06 -04:00
Slava Pestov 2772473d1c Merge branch 'master' of git://factorcode.org/git/factor 2009-05-04 06:43:36 -05:00
Slava Pestov 28cb6ea5c3 NetBSD build fix 2009-05-04 06:43:20 -05:00
Slava Pestov abf7912ae7 Cleanups 2009-05-04 05:07:14 -05:00
Slava Pestov 8872c40b1e The great type renaming 2009-05-04 04:50:24 -05:00
Slava Pestov edecac508e Use C++ namespaces 2009-05-04 01:46:13 -05:00
Slava Pestov 8e17e0a01e VM: use better abstractions for tagged pointers, eliminate get()/set() stuff, clean up array, string, and byte-array element access 2009-05-04 01:00:30 -05:00
Slava Pestov ec28b1ef85 Various VM cleanups, new approach for bignum GC root registration 2009-05-03 05:48:03 -05:00
Slava Pestov e3592ca8f6 Clean up untag_* and tag_* inline functions in favor of more idiomatic C++ 2009-05-02 20:47:29 -05:00
Slava Pestov b923d548cf Move vmpp to vm 2009-05-02 20:37:18 -05:00
Slava Pestov 982d409a8b Fix VM compilation on Windows 2009-05-01 02:01:43 -05:00
slava b8b7d3861b Fix some compiler warnings 2009-04-30 23:50:53 -04:00
Slava Pestov d93514d47d Merge branch 'master' of git://factorcode.org/git/factor 2009-04-30 21:13:36 -05:00
Slava Pestov b20ed595c4 Remove obsolete comment 2009-04-30 19:47:08 -05:00
Slava Pestov 742d574162 Non-optimizing compiler doesn't need to optimize 'dispatch' primitive anymore since its rarely used 2009-04-30 19:42:08 -05:00
Slava Pestov 7be231f6f8 Clean up code duplication in quotations.c 2009-04-30 19:07:13 -05:00
Slava Pestov f9ec0a07c5 Fix PICs for x86-64 2009-04-30 18:00:49 -05:00
Doug Coleman 674bb9a4d5 remove error_message from windows vm 2009-04-30 09:36:01 -05:00
Slava Pestov d6444e742c Fix comment 2009-04-30 07:06:23 -05:00
Slava Pestov 5bc63fc237 At the end of a compilation unit, all PICs become dead so add them to the free list immediately instead of having them waste space until the next GC.
Similarly, when a PIC transition occurs, add the old PIC to the free list immediately. 
Remove an unused function update_code_heap_roots()
2009-04-30 05:59:44 -05:00
Slava Pestov 5fb5c19d61 Machine code is now stored in a byte array instead of an array for add_code_block() 2009-04-30 04:34:35 -05:00
Slava Pestov 515c619202 Non-optimizing compiler now open-codes megamorphic dispatch fast path 2009-04-30 03:37:07 -05:00
Slava Pestov fc4894fbdf Replace ratio and complex built-in types with tuples defined in the library. This frees up two lo-tags, so move array and quotation over to these tags and update compiler for new tags 2009-04-30 00:27:35 -05:00
Slava Pestov 62db617927 Get rid of two instructions from tag pics and one instruction from all others 2009-04-29 22:24:28 -05:00
Slava Pestov bd186b6320 Eliminate 3 instructions from PIC fast path 2009-04-29 21:32:05 -05:00
Slava Pestov ae22b345ec PIC -> megamorphic transition now has correct semantics within compilation units 2009-04-29 19:50:50 -05:00
Slava Pestov 02bd4f3f00 PICs now pass the method table around instead of extracting it from the generic word body. This gels better with how compilation units are supposed to work 2009-04-29 19:39:43 -05:00
Slava Pestov a26947ba2e Remove obsolete -mtune=pentium4 compile flag 2009-04-28 23:05:42 -05:00
Slava Pestov 9243316489 Debugging inline caching 2009-04-28 23:05:18 -05:00
Slava Pestov dfcbd206b6 Fix -pic command line switch, and enable PICs in user-space 2009-04-28 18:06:10 -05:00
Slava Pestov c15a4c1c5a Add new relocation type for call sites which may be replaced by ICs 2009-04-28 17:53:14 -05:00
Slava Pestov 5f6c074edd Split up types.c/h into smaller files, remove optimized slot from F_WORD struct 2009-04-28 17:26:11 -05:00
Slava Pestov e8008af5d0 inline-cache-miss primitive now jumps to the new stub 2009-04-28 16:58:38 -05:00
Slava Pestov 3985b18026 Add -pic= command line argument 2009-04-28 16:58:19 -05:00
Slava Pestov e940f6fd8b Add method dispatch statistics 2009-04-28 16:58:05 -05:00
Slava Pestov bd1b6be732 Remove some unused macros 2009-04-28 04:03:11 -05:00
Slava Pestov 4d10105802 Working on inline caching 2009-04-28 03:48:37 -05:00
Slava Pestov d5b51df7e7 Clean up profiler.c using new JIT API 2009-04-28 00:53:32 -05:00
Slava Pestov e45790a802 Split off parts of quotations.c into jit.c, which is a general codegen facility used by the non-optimizing compiler, and soon to be the profiler and PICs 2009-04-28 00:48:00 -05:00
Slava Pestov 15ef4f651b Sprinkle VM source with assertions, add a missing local root to quotations.c, fix GROWABLE_ARRAY macros for GC safety 2009-04-28 00:11:09 -05:00
Slava Pestov bba3bdd2bd Merge branch 'inline_caching' into jit_cleanup 2009-04-27 17:09:12 -05:00
Slava Pestov bba30dc284 Fix conflict from master 2009-04-27 17:09:09 -05:00
Slava Pestov bf0e8606a8 Merge branch 'master' into inline_caching 2009-04-26 21:26:39 -05:00
Slava Pestov 087c962f75 VM: simplify GC a bit, add GC_DEBUG compile-time flag 2009-04-26 16:05:09 -05:00
Slava Pestov e0f6825757 Rename some fields to avoid conflicting with windows.h macros 'small' and 'large' 2009-04-26 10:02:52 -05:00
Slava Pestov f94a44f3fd Merge branch 'master' into inline_caching 2009-04-26 09:22:27 -05:00
Slava Pestov 5f756a8019 Code GC: segregated free list for faster allocation, combine unmark/build free list/update literals passes into one pass for faster deallocation 2009-04-26 09:15:58 -05:00
Slava Pestov a14e5a4a3b Better local cache 2009-04-26 08:06:37 -05:00
Slava Pestov 63fff0a832 Clean up VM's growable array implementation, and non-optimizing compiler 2009-04-26 07:00:48 -05:00
Slava Pestov 89eccddde7 quotations.c: fix quot_code_offset_to_scan 2009-04-25 22:35:51 -05:00
Slava Pestov 356537593e Get rid of execute-unsafe now that (execute) is more versatile 2009-04-25 21:50:34 -05:00
Slava Pestov 2630c4a95f Add local caching 2009-04-25 20:33:52 -05:00
Slava Pestov 8c5b0373a8 Working on new method dispatch system 2009-04-24 15:31:06 -05:00
Slava Pestov b00d81e47b Add time spent scanning cards to 'time' output 2009-04-24 09:44:29 -05:00
Slava Pestov 461ddfac1a Fix 'become' 2009-04-21 00:05:39 -05:00
Slava Pestov f38d2f91f6 Words which didn't compile cannot be run at all 2009-04-20 22:05:41 -05:00
Slava Pestov 968bf4bcb4 Merge branch 'master' of git://factorcode.org/git/factor 2009-04-20 01:56:16 -05:00
Slava Pestov 5ac1358aea Report actual SEH code on Windows instead of 'signal 11' 2009-04-20 01:55:27 -05:00
Slava Pestov 8baaf04ac5 When doing code heap compaction, don't scan stacks as roots since we're going to exit anyway 2009-04-18 03:25:51 -05:00
Slava Pestov f4cdcaa1ce Fix compiler warnings in tools.deploy.shaker 2009-04-17 20:38:55 -05:00
Slava Pestov db3818814d Refactor GLU usages in basis, and move opengl.glu to extra, and don't like VM with GLU 2009-04-11 15:17:08 -05:00
Slava Pestov ef095f5eef Check return value of fread and fwrite in image.c 2009-04-11 14:28:48 -05:00
Doug Coleman 2ff6c7ed07 use fseek on windows instead of _fseeki64 2009-04-03 14:59:46 -05:00
Doug Coleman 4f3e8be3f6 move FSEEK definition from os-genuinx.h to os-unix.h 2009-04-03 12:26:04 -05:00
Doug Coleman 34c8e07900 make FSEEK macro for using _fseeki64 instead of fseeko on windows 2009-04-03 10:35:43 -05:00
Slava Pestov 535850f3ea Fix vocab: and word name stripping in deployed binaries 2009-04-03 10:16:56 -05:00
Slava Pestov 9907bd9fe2 Add fseek primitive so that c-streams can seek. This lets the UI work without native IO 2009-04-03 10:16:25 -05:00
Doug Coleman 5a9dc86774 fix typo 2009-04-02 11:42:10 -05:00
Slava Pestov 39b53817b9 Small size reduction for deployed images 2009-03-31 08:15:27 -05:00
sheeple 42d164db77 Fix C99 complex number support in FFI on Mac OS X/PPC 2009-03-30 07:19:14 -05:00
Slava Pestov 2314af94fe Remove redundant flush_icache() call 2009-03-29 16:38:12 -05:00
Doug Coleman 5460a5375e change makefile to use .so instead of .a on unix 2009-03-28 14:41:48 -05:00
Doug Coleman 45ed9b3b80 use -fPIC on all platforms for ffi lib 2009-03-27 15:39:13 -05:00
Doug Coleman 785e3bcfd0 only use -fPIC on the ffi library 2009-03-26 10:47:25 -05:00
Doug Coleman 77fccb2782 build with -fPIC on linux64 2009-03-26 10:38:00 -05:00
Doug Coleman 97283b9857 compile an ffi test library, reduce factor runtime by 6kb! 2009-03-25 13:06:20 -05:00
sheeple c6837fbe3e Update cpu-ppc.S for quotation layout change 2009-03-24 01:07:38 -05:00
Slava Pestov 2a7848053f Fix 64-bit build issue; relocation entries are 32-bit on all platforms 2009-03-19 23:21:32 -05:00
Slava Pestov ae09d85d84 More compact relocation layout 2009-03-19 20:03:07 -05:00
Slava Pestov 8f059e07a7 Move flags from F_CODE_BLOCK to F_BLOCK for further space savings 2009-03-19 03:49:49 -05:00
Slava Pestov 78f168e304 Remove code_length field from F_CODE_BLOCK struct, and make F_BLOCK the head of F_CODE_BLOCK to simplify other code 2009-03-19 03:45:37 -05:00
Slava Pestov 44d61b71f6 Store next_free pointer to free blocks only 2009-03-19 03:00:21 -05:00
Slava Pestov be4fb1e7d9 Move call( and execute( to core 2009-03-16 20:11:36 -05:00
Slava Pestov 1559b74640 Add new check-datastack primitive and re-implement call( with it, instead of using with-datastack. call( is now 5x faster 2009-03-16 06:16:51 -05:00
Slava Pestov a2d93dad1d Fix to make new_ui compile with X11 libraries on Mac OS X 2009-03-05 13:38:55 -06:00
Slava Pestov 2fee574b4f Working on X11 backend 2009-03-02 02:55:54 -06:00
Slava Pestov 4257cd55e0 fix problem with bignum-bit? -- return value would be truncated if sizeof(int) != sizeof(bignum_digit_type) 2009-02-22 19:45:05 -06:00
Joe Groff 5dd4bbcf42 Defuse RTLD_GLOBAL time bomb in os-unix.c 2009-02-10 19:58:53 -06:00
Doug Coleman 201296c040 dllexport err_no and clear_err_no 2009-02-06 18:46:23 -06:00
sheeple 173b0ee78d Add some more tests for complex numbers in FFI 2009-02-06 12:21:53 -06:00
Slava Pestov 05632b8525 Don't use complex.h since *BSDs don't have it in latest release versions (gah!); add DLLEXPORT for ffi_test_45 to make it work on Windows 2009-02-06 11:03:52 -06:00
Slava Pestov f9bc9a3198 Fix VM compile error 2009-02-06 04:53:08 -06:00
Slava Pestov 7bb0e78314 Add support for C99 complex float and complex double types to FFI
They are named complex-float and complex-double in the Factor world
2009-02-06 04:02:00 -06:00
unknown b6c3bc892d Fix the build support for windows again, have the makefile load Config.* files in the top level so that freetype.dll and zlib1.dll targets can make 2009-02-04 18:21:58 -06:00
Doug Coleman eec86d6043 Fix io.launcher on Windows -- Microsoft does the same thing with devenv 2009-02-04 13:05:52 -06:00
Doug Coleman a60e11b89e add RTLD_GLOBAL to dlopen flags. load atlas before cblas on freebsd 2009-01-30 16:45:30 -06:00
Doug Coleman ed7b49df78 Windows vm now tries vm-console.image or vm.image first, then removes -console if it exists and tries to find the image again 2009-01-29 19:57:01 -06:00
Doug Coleman 8acba1543a oops, didnt mean to remove these two lines 2009-01-29 13:38:07 -06:00
Doug Coleman 2d960f4103 Create two binaries: factor.com and factor.exe. factor.com is the console version, factor.exe is win32. also make a factor shell script called factor to help cygwin out because it ignores the env vars 2009-01-29 13:15:16 -06:00
Slava Pestov c074740746 Split off data_heap.c from data_gc.c; split off write_barrier.h, local_roots.h from data_gc.h, misc other cleanups 2009-01-24 23:39:00 -06:00
Slava Pestov ed1a2855b5 Big code GC refactoring
- Move code block-specific parts of code_gc.c to code_heap.c
- code_gc.c is now a generic malloc-style heap
- New code_block.c to split up large code_heap.c
- Clean up relocation code and remove some duplication
- Fix problems with code heap not being updated properly with uninterned words (bug re
ported by doublec)
- Remove boolean parameter from modify-code-heap primitive
- Less unnecessary fixup speeds up bootstrap slightly
2009-01-24 20:13:17 -06:00
Slava Pestov 670d0106d1 Clean up some duplication 2009-01-24 17:42:28 -06:00
Slava Pestov 32bb531621 Move literal tables out of code heap, instead each code block holds a reference to the literal table 2009-01-24 17:01:01 -06:00
Slava Pestov a8d1459c08 Rename compiled slot of words to optimized, to reflect what it really means (all words are compiled) 2009-01-23 00:37:02 -06:00
Doug Coleman 09b82321b5 remove failed proper-save from vm 2009-01-21 23:32:23 -06:00
Doug Coleman 1dc7ecfdc5 lol the hak...fix coming up 2009-01-21 20:12:09 -06:00
Doug Coleman a9277c71fd fix macosx initialization of executable_path 2009-01-21 18:07:26 -06:00
Doug Coleman 99cd664961 better save_image that doesn't corrupt your factor image if you're out of disk space. should throw exception instead of printing error messages if saving fails.. 2009-01-21 15:02:27 -06:00
Doug Coleman 9f95c9611b fix vm path on openbsd, fix compiler warning 2009-01-19 21:19:32 -06:00
Slava Pestov 0d56665522 Fix Windows build 2009-01-16 14:21:44 -06:00
Slava Pestov 07ec51b24a Clean up embedding API 2009-01-14 18:40:23 -06:00
Doug Coleman 585d977ed0 remove a couple comments from Config.windows files 2009-01-13 20:54:39 -06:00
Slava Pestov b2e45f199e Calling dispose on unix stdin no longer kills the VM 2008-12-20 18:02:08 -06:00
Slava Pestov 00212bb626 Save and restore r31 2008-12-16 02:06:53 -06:00
unknown b5d98e6a1e Fix warning 2008-12-15 21:19:04 -06:00
U-SLAVA-DFB8FF805\Slava f4c3bf1dd6 Fix compile warning and fix (sleep) primitive on Windows 2008-12-13 04:49:16 -06:00
Joe Groff 88856fac21 OSX VM requires function from Cocoa framework, so link against it even when building for X11 2008-12-10 12:22:17 -08:00
Slava Pestov ec23584f48 Finish up O(1) byte array allocation 2008-12-09 18:17:04 -06:00
Slava Pestov eb79c6ab71 Fix conflict 2008-12-09 17:52:45 -06:00
Slava Pestov 9ad51490af Fix GC crash with -generations=2 2008-12-09 16:26:30 -06:00
Slava Pestov 833d9f9c0b Fix quotation pooling 2008-12-08 21:24:45 -06:00
Slava Pestov e4f8448eb1 Fix some problems with arithmetic type inference, exposed by recent changes to log2 word
- declared input type for bignum-shift was stricter than the runtime behavior, leading to bad propagation of type info if shift count was a bignum
- types inferred for type functions which used number-valued/integer-valued/real-valued were not always precise, eg bignum bignum bitxor => integer
- add interval-log2, type function for (log2)
- remove math-class-min, it was useless
2008-12-07 19:44:49 -06:00
Slava Pestov 0290be6e93 Exploit the fast-path for allocation of array with initial element 0 by changing
new-sequence on arrays, the vector constructor, and resize-array, called when
growing vectors, to fill arrays with 0 instead of f. user code never observes the
initial value in these situations anyway. small speedup on bootstrap
2008-12-06 18:37:28 -06:00
Slava Pestov 908644ee7a O(1) <sbuf> and new-sequence on byte-arrays (work in progress) 2008-12-05 07:28:52 -06:00
Slava Pestov e256846acd Tweak string representation; high bit indicates if character has high bits in aux vector. Avoids memory access in common case. Split set-string-nth into two primitives; set-string-nth-fast is open-coded by optimizing compiler. 13% improvement on reverse-complement 2008-12-05 06:38:51 -06:00
Slava Pestov d59f8b10dc Fix printing of negative fixnums in FEP 2008-12-01 18:08:39 -06:00
sheeple abc486c342 Subtraction overflow was wrong way round on PowerPC 2008-11-30 06:08:16 -06:00
sheeple 2b1a90e90a Fixing PowerPC arithmetic primitives 2008-11-28 22:22:26 -06:00
Slava Pestov 68dd6cc35a Working on PowerPC overflow checks 2008-11-28 20:02:50 -06:00
Slava Pestov 2863da257b fixnum-shift didn't work with very large negative shift counts; BRANCHLESS_MAX macro was wrong 2008-11-28 08:34:30 -06:00
Slava Pestov 5634becda1 ##fixnum-add, ##fixnum-sub instructions open-code overflow check 2008-11-28 05:33:58 -06:00
Slava Pestov 6320b936ff Merge branch 'master' into faster_overflow_checks 2008-11-28 04:35:26 -06:00
Slava Pestov c8a8d69382 After merging quotations, we need to update references to the old versions' XTs in the code heap 2008-11-28 03:47:37 -06:00
Slava Pestov b3ad902208 Fix cosmetic issue 2008-11-28 00:48:20 -06:00
Slava Pestov fff10d8082 Fix for gcc 4.2 2008-11-27 23:32:17 -06:00
Slava Pestov cfbd3c679b Remove unused function from VM 2008-11-27 23:28:38 -06:00
Slava Pestov 6dfce7d4e7 load-locals is a primitive now, change semantics of get-locals to bum out 2 instructions from the sub-primitive 2008-11-27 22:30:29 -06:00
Slava Pestov e78121f38c Rewrite remaining fixnum primitives in assembly (work in progress) 2008-11-26 04:22:39 -06:00
Slava Pestov 826be7530e Check Mac OS X version on startup and give up if we're running something older than 10.5 2008-11-25 21:51:41 -06:00
Slava Pestov c7c1f3903f Fix performance problem: literals were being scanned too often 2008-11-25 21:27:07 -06:00
slava fbc0f33c86 The deploy tool would coalesce equal quotations into one. This created a problem
for the non-optimizing compiler because if the new 'leader' quotation was not
compiled but some of the ones that it replaces were, then calls to the quotation
from contexts where they have to be compiled (eg, compiled if and dip) would no
longer work. Add a `jit-compile' primitive to compile quotations, and call it
as appropriate in `compress-quotations`.
2008-11-24 15:59:27 -06:00
Slava Pestov a4282139dc Add comments explaining recent changes 2008-11-24 09:27:15 -06:00
Slava Pestov ab689c098b Clean up direct literal code and make a first attempt at PowerPC support 2008-11-24 08:16:14 -06:00
Slava Pestov 030501d6ef GC speedup 2008-11-24 06:49:14 -06:00
Slava Pestov 2aaf860f47 Experimental optimizations 2008-11-24 06:40:51 -06:00
Slava Pestov 8663ca2982 Fix VM for PowerPC 2008-11-24 02:03:01 -06:00
Slava Pestov d86524f4bc Non-optimizing compiler now compiles dip, 2dip, 3dip, if, with direct branches instead of indirect branches. 8% bootstrap time improvement on Core Duo 2 2008-11-24 00:23:17 -06:00
Slava Pestov 1d6e389d18 Fixing walker, adding traceback tests 2008-11-23 21:40:54 -06:00
Slava Pestov 65b89eea9e Fix compile error 2008-11-23 04:46:15 -06:00
Slava Pestov 7788b3e0db Merge branch 'master' into microseconds 2008-11-23 03:06:32 -06:00
Slava Pestov a4d9cdfeb3 Refactor all usages of >r/r> in core to use dip, 2dip, 3dip
Non-optimizing compiler now special-cases dip, 2dip, 3dip following a
literal quotation: this allows us to break the dip/slip meta-circle
without explicit calls to >r/r>
2008-11-23 02:44:56 -06:00
Slava Pestov f1b95c0038 Fix .c command in FEP 2008-11-22 19:57:06 -06:00
Slava Pestov 1b091b5a26 Reuse F_CONTEXT instances used for FFI callbacks: 60x speed improvement on benchmark.fib6 2008-11-21 23:13:14 -06:00
Slava Pestov 322d115d2e /mod didn't handle overflow correctly 2008-11-21 05:18:55 -06:00
Slava Pestov 27503bf67f Faster /mod and /i primitives 2008-11-21 01:54:45 -06:00
Doug Coleman 3ea773fa80 remove UNKNOWN test 2008-11-19 16:10:00 -06:00
Slava Pestov 8819f23312 Replace millis primitive with micros primitive
Add millis as a library word
sleep now takes either a duration or a microsecond count; code using durations doens't need to be updated, code using millisecond counts updated to use durations for the most part
2008-11-19 01:50:05 -06:00
U-SLAVA-DFB8FF805\Slava 2ffecd3acc Fix VM compile on 32-bit Windows 2008-11-18 18:51:52 -06:00
Slava Pestov 7fd0a27c0d VM no longer uses printf since format string directives are not portable between Win64 and everything else... 2008-11-18 18:21:42 -06:00
Slava Pestov d6dd9ea2a3 Add workaround for Windows bttray.exe issue 2008-11-17 21:21:57 -06:00
unknown ddd28c7d12 Fix Win64 type issue 2008-11-17 18:44:06 -06:00
Slava Pestov 14246fde37 Better FFI unit tests expose a new problem 2008-11-17 12:23:44 -06:00
Slava Pestov 63d109cc04 Remove unused F_CURRY struct from layouts.h 2008-11-16 11:49:32 -06:00
Slava Pestov cfa82cb474 New calling convention for VM primitives:
instead of the Factor side passing the stack pointer as the first parameter, and having the VM save it to stack_chain->top, we instead have the Factor side save it. Eliminates a lot of crud in the VM
2008-11-13 03:20:34 -06:00
Slava Pestov cdb94e4c62 Word constructor was not invoking relocation on the profiled block, so words constructed while profiling was on could not be executed. This prevented profiling of PEGs 2008-11-11 23:07:40 -06:00
Slava Pestov abc3915387 Fix x86-32 VM compilation; was using a 64-bit reg on accident 2008-11-08 21:06:51 -06:00
Slava Pestov fdbea06e27 Fix compile warning 2008-11-08 20:40:09 -06:00
unknown 359fb6e518 VM fixes for Win64 calling convention 2008-11-08 20:32:23 -06:00
unknown 7365959f01 Starting work on Win64 port 2008-11-07 20:33:32 -06:00
unknown e45df2e89c Fix bignums for Win64 2008-11-07 20:25:31 -06:00
Slava Pestov c2117d4046 make macosx-ppc now compiles a ppc binary on intel mac os; it doesn't work properly in rosetta though 2008-11-06 03:37:10 -06:00
Slava Pestov 7741096bff Tweak PPC register usage; gcc doesn't like it when you mess with r31 for some reason 2008-11-06 03:36:46 -06:00
Slava Pestov cc879fa9b7 Tuple layouts are now arrays, instead of built-in types. The superclass
array is now part of the tuple layout object itself, and class hashcodes
are stored alongside class words there. This removes 2 indirections when
reading a superclass, and 3 when reading a superclass hashcode.
2008-11-05 22:20:29 -06:00
Slava Pestov 2239f4fb99 More work on PowerPC backend; change register usage, free up some more integer and float regs (untested) 2008-11-05 04:20:35 -06:00
U-SLAVA-DFB8FF805\Slava 72b34c7b47 Fix visibility of check_sse2 symbol; DDLEXPORT doesn't work in gas source 2008-11-04 00:04:18 -06:00
Slava Pestov 00fc4eb179 Fix Windows bootstrap: check_sse2 was not DLLEXPORT 2008-11-03 07:27:14 -06:00
Slava Pestov 44a2499c17 fixnum-shift-fast and fixnum-mod subprimitives 2008-11-03 01:18:35 -06:00
Slava Pestov 804c6f93ea Fix x86.32 2008-10-31 21:07:41 -05:00
Slava Pestov 461a4ddd0a Add SSE2 detection routine 2008-10-20 05:56:39 -05:00
Doug Coleman 964961ed74 remove dead code 2008-10-19 18:13:59 -05:00
Doug Coleman f324ceb2b0 remove some macroz 2008-10-19 16:50:11 -05:00
Doug Coleman 78a529b1c3 remove directory from the vm 2008-10-19 13:27:59 -05:00
Doug Coleman 84ec1eec1d remove environ and os-envs primitives 2008-10-18 21:41:16 -05:00
Slava Pestov 6130aeb88f Fix fep looping 2008-10-09 00:13:04 -05:00
Slava Pestov ded36a2279 Fix GC bug 2008-09-28 21:55:40 -05:00
Slava Pestov be4915ee9c Fix save-image-and-exit bug 2008-09-19 14:44:58 -05:00
Doug Coleman c6db662b3b Rice is a part of every healthy diet 2008-08-05 04:38:01 -05:00
Slava Pestov 722cacddb4 Fixing some problems with returning structs by value in x86.64 FFI 2008-09-13 20:28:13 -05:00
Slava Pestov a3d1379b8c Fix bug with large structs passed by value on x86.64 2008-09-09 03:10:43 -05:00
Slava Pestov e1716d92b3 Remove delegation slot 2008-09-03 03:46:56 -05:00
Slava Pestov 5a0c3e3d73 Add better error message for out of memory 2008-07-25 22:05:36 -05:00
Slava Pestov 3cea135fae Working on PowerPC port 2008-07-14 01:57:19 -05:00
Slava Pestov aff81d80e7 Fix walker 2008-07-13 02:29:59 -05:00
Slava Pestov 16b85df5db Fixes and a small optiimization 2008-07-12 22:27:28 -05:00
Slava Pestov 380891943c Better comments 2008-07-11 17:38:53 -05:00
Slava Pestov a876005c98 Clean up non optimizing compiler, rewrite more primitives in assembly 2008-07-11 17:25:46 -05:00
Slava Pestov 70e370f69d Fix walker 2008-07-07 19:26:58 -05:00
Slava Pestov a8808b7087 Non-optimizing compiler now inlow inlines some primitives, this improves bootstrap time 2008-07-07 10:39:04 -05:00
Slava Pestov b1e5346179 More EINTR handling 2008-07-06 18:28:41 -05:00
Slava Pestov 0f6ecc10cd Fix EINTR handling in Unix stdin pipe hack 2008-07-06 04:12:46 -05:00
Slava Pestov a9adf82e70 Fix obscure bug in profiprofiler 2008-07-05 22:19:16 -05:00
slava db0d714eba Output relocation data size 2008-07-05 03:07:34 -05:00
Slava Pestov 86f476a23d Fix bug in <displaced-alien> found by Joe 2008-07-04 22:36:55 -05:00
Slava Pestov 26cc64908f Fix compile error on FreeBSD x86.64 2008-07-04 03:23:14 -05:00
Slava Pestov 7f903365ed Fix OpenBSD compile error 2008-07-04 01:53:38 -05:00
Slava Pestov dc90b0014b Fix Linux compile error 2008-07-03 21:34:37 -05:00
Slava Pestov e0f7849b3f Fix compile error 2008-07-03 21:12:39 -05:00
Slava Pestov cc008e6c2c Better error checking for image saves 2008-07-03 19:52:59 -05:00
slava dc2c0876b6 Fix compile errors 2008-07-03 18:39:56 -05:00
Slava Pestov ab881cbd7a Put that in your pipe and smoke it 2008-07-03 17:44:44 -05:00
Slava Pestov f7eecc7893 Move bit-arrays and float-arrays to extra 2008-07-02 02:03:30 -05:00
Slava Pestov 86a62c8e93 Better error message 2008-06-30 18:33:31 -05:00
Slava Pestov 92a8084f0f Merge commit 'jcg/master' 2008-06-12 03:32:07 -05:00
Slava Pestov 8b8a3d988f Remove dead code from VM 2008-06-12 03:07:02 -05:00
Joe Groff 7b522ee407 add XBell to xlib. workaround for Leopard linking to X11 libGL 2008-06-11 19:12:24 -07:00
Slava Pestov 765b456904 Fix profiler 2008-05-30 14:10:18 -05:00
Slava Pestov 727cfcba43 Move relocation info out of the code heap and into the data heap 2008-05-30 01:31:05 -05:00
Slava Pestov 4ef0ff1ca1 Remove unnecessary padding 2008-05-29 17:33:11 -05:00
Slava Pestov 5c1f909e44 Lame: link VM with OpenAL to avoid signal 6 on NetBSD 2008-05-22 01:17:39 -05:00
Slava Pestov 5b321c2308 Dynamically loading libssl doesn't work on OpenBSD for some reason; link VM with it 2008-05-21 16:07:41 -05:00
Slava Pestov c123129b95 Faster GC 2008-05-10 00:42:26 -05:00
Slava Pestov 6cd0c315c6 Align generation sizes on deck boundaries 2008-05-09 20:19:13 -05:00
Slava Pestov 8c8f5fdb2c Bigger decks and cards 2008-05-09 18:48:48 -05:00
Slava Pestov c035f86ca2 Revert large deck change for now, fix PowerPC write barrier 2008-05-09 17:30:32 -05:00
Slava Pestov a233349c1f Bigger cards and decks 2008-05-09 00:09:12 -05:00
Slava Pestov fb605aadad Simpler write barrier 2008-05-08 23:21:46 -05:00
Slava Pestov 84924645ad Merge branch 'master' of git://factorcode.org/git/factor 2008-05-08 16:58:55 -05:00
slava b712478ee3 Merge branch 'master' of git://factorcode.org/git/factor 2008-05-08 15:51:10 -05:00
Slava Pestov 22a9a8b95e More improvements to 'time' word 2008-05-07 23:09:18 -05:00
Slava Pestov 739a75f2bb More efficient minor GC 2008-05-07 21:39:20 -05:00
Slava Pestov 1d60d722fe Improve time word, faster card scan 2008-05-07 17:42:41 -05:00
Doug Coleman ca1484b94c fix ffi test 2008-04-23 17:07:37 -05:00
slava 3b5afee8db Try to degrade gracefully if inotify is unavailable 2008-04-21 17:50:40 -05:00
Slava Pestov 9dfdc2f872 Checked in .s again, add to .gitignore 2008-04-20 23:53:44 -05:00
Slava Pestov e9b9172a8e VM changes for FFI encoding work 2008-04-20 06:15:14 -05:00
Slava Pestov f48d5091c9 Faster inline allocators 2008-04-19 04:52:34 -05:00
Slava Pestov d7763d6b71 Add another unit test 2008-04-19 02:11:30 -05:00
Slava Pestov 7516041e36 Try to fix includes for stesch 2008-04-18 16:56:47 -05:00
Slava Pestov a8d0eecd9e Add DLLEXPORT 2008-04-17 21:26:37 -05:00
Slava Pestov c00f89c38b Fix problem with callbacks 2008-04-17 04:14:42 -05:00
Slava Pestov d44c0ffcc9 Oops 2008-04-13 12:13:09 -05:00
Slava Pestov 0a5701d868 Fix write barrier and roots problem with strings 2008-04-13 09:20:19 -05:00
Doug Coleman 07b1552d2e fix bug with long environment variables 2008-04-11 21:37:18 -05:00
Doug Coleman 8a0909d849 fix ffi test int ffi test 36 point 5 2008-04-10 20:09:36 -05:00
Slava Pestov 9373df5c4c Fix -generations=1 2008-04-09 17:04:09 -05:00
Doug Coleman 1a625385ce Merge branch 'master' of git://factorcode.org/git/factor 2008-04-09 16:58:18 -05:00
Doug Coleman 2da9aa9d18 Fix Linux/PPC port 2008-04-09 16:58:55 -05:00
Doug Coleman 409d984c3c move os_env from run to os-unix.c/os-windows.c 2008-04-09 16:57:21 -05:00
Doug Coleman d1cc5cc650 windows environment variables 2008-04-09 00:33:29 -05:00
Doug Coleman 1da97fe13e Merge branch 'master' of sheeple@office.stack-effects.com:factor 2008-04-09 00:08:23 -05:00
Doug Coleman c19505cd84 set-os-env on windows 2008-04-08 23:35:28 -05:00
Doug Coleman 6c5935a3b0 add set-os-env, unset-os-env 2008-04-08 23:08:11 -05:00
Slava Pestov 37d6dc70e8 Merge branch 'master' of git://factorcode.org/git/factor 2008-04-07 20:20:14 -05:00
Slava Pestov 4c08b7dc81 Add zip word, better code-room primitive 2008-04-07 20:19:49 -05:00
Slava Pestov 3164cda6fb Remove bogus files 2008-04-07 15:45:08 -05:00
Slava Pestov 225a0fb781 Fix Windows crash with set-os-envs 2008-04-06 23:31:53 -05:00
Slava Pestov 2c76171c8a Fix profiler crash with large heap 2008-04-05 08:27:07 -05:00
Slava Pestov e545c90453 Bigger nursery/aging spaces on 64 bit 2008-04-05 04:58:34 -05:00
Slava Pestov 545b8a3d05 Default nursery size is 1mb; don't double nursery and accumulation when growing data heap 2008-04-05 04:36:13 -05:00
Slava Pestov b2cb88f497 GC: allocate large objects directly into tenured space 2008-04-05 04:01:46 -05:00
Slava Pestov 4515588b98 Fix compile error 2008-04-05 02:14:44 -05:00
Slava Pestov 6842a2829d Fixing GC 2008-04-05 02:08:37 -05:00
Slava Pestov 3eeffbb104 Disable logging for now 2008-04-04 22:40:48 -05:00
Slava Pestov 315b467748 Add debug messages 2008-04-04 21:44:39 -05:00
Slava Pestov 5b5aaa344a Smarter fep 2008-04-04 09:17:26 -05:00
Slava Pestov 3a374f2045 Fix amazing performance regression 2008-04-04 07:08:03 -05:00
Slava Pestov a27fa29098 Remove type, class-hash primitives 2008-04-02 21:37:26 -05:00
Slava Pestov 7cd21081af Don't JIT inside heap scan loop, too fragile 2008-04-02 18:50:35 -05:00
slava 01fd99fd71 Starting work on Solaris port 2008-03-29 05:30:25 -05:00
Doug Coleman ea94662abd NetBSD x86/64 fixes 2007-04-14 05:49:09 -05:00
Slava Pestov e1ad21a439 Working on shapes 2008-03-26 03:57:48 -05:00
Doug Coleman 9c745c44d3 add set-priority and get-priority
add clear_err_no and check-errno for dealing with get-priority
2008-03-21 14:53:11 -05:00
sheeple d1e72fd03b make freebsd64 compile 2008-03-20 23:53:05 -05:00
Doug Coleman 67c9e2f631 make openbsd64 bootstrap
fix target for openbsd64
2008-03-16 15:17:11 -05:00
Doug Coleman 2f93c77e7c add -lz 2008-03-20 15:35:35 -05:00
Doug Coleman bdda6fc3cb make openbsd compile with NO_UI=1 2008-03-20 12:10:43 -05:00
Slava Pestov 0c490161b4 Fix exists? 2008-03-20 00:39:32 -05:00
Slava Pestov aec6d6f5c8 Replace (stat) with (exists?) 2008-03-19 23:29:19 -05:00
Slava Pestov f31c521c47 Assorted bug fixes 2008-03-18 17:46:25 -05:00
Slava Pestov 20ed8ab9a2 Fix code heap compaction bug 2008-03-16 00:17:05 -05:00
Slava Pestov 05b02f3c38 Changing launcher to use new_slots 2008-03-06 20:44:52 -06:00
Slava Pestov 549a7538c7 Clean up some of Dan's code after merge 2008-03-06 15:58:05 -06:00
Slava Pestov 9d05d81491 Fix deploy size regression 2008-02-28 01:22:53 -06:00
Slava Pestov fef5ebec01 io.files overhaul 2008-02-27 14:59:15 -06:00
Slava Pestov 4ee8a0cfa6 Better code heap 2008-02-25 20:09:52 -06:00
Eduardo Cavazos 4b92faed90 Change 'os-windows-nt.h' to reflect rename to 'factor.dll' 2008-02-25 13:10:35 -06:00
Eduardo Cavazos b68c60488a Dll on winnt is now 'factor.dll' instead of 'factor-nt.dll' to be
consistent with the binary name.
2008-02-25 13:05:11 -06:00
Eduardo Cavazos 308a5db996 Binary on winnt is now 'factor.exe' instead of 'factor-nt.exe' 2008-02-25 12:42:52 -06:00
Slava Pestov 2535436f19 Friedlier fep sequence printing 2008-02-21 17:07:05 -06:00
Slava Pestov d657821f3e Tested and documented all new concurrency features 2008-02-18 16:20:18 -06:00
Slava Pestov 2c6afdfee6 Working on new threads 2008-02-18 05:07:40 -06:00
Slava Pestov de8b804abe Fix method redefinition bug 2008-02-17 18:38:29 -06:00
Slava Pestov 0b19589630 linkage errors don't thwart compilation anymore 2008-02-16 00:54:54 -06:00
Slava Pestov f944f2b20c Add experimental disassembler 2008-02-14 17:56:47 -06:00
Slava Pestov 98d8621ac1 First class compose, curry is now a tuple class 2008-02-11 13:50:29 -06:00