Slava Pestov
ded9a1eca9
vm: remove unnecessary call to compile_all_words() from primitive_become()
2010-01-07 13:49:29 +13:00
Slava Pestov
72311506d2
vm: ensure that non-optimized calls to generic words which have not yet been compiled can still work
2010-01-06 23:49:14 +13:00
Slava Pestov
a9f90026df
Update x86-32 for assembly entry point changes
2010-01-06 17:55:20 +13:00
Slava Pestov
d2baa6dde5
vm: move c_to_factor, lazy_jit_compile_impl, throw_impl, set_callstack assembly routines into non-optimizing compiler for x86-64
2010-01-06 15:47:36 +13:00
Slava Pestov
8a6c487a48
Merge branch 'master' of git://factorcode.org/git/factor
2010-01-03 23:21:31 +13:00
Slava Pestov
9399a68786
Change how non-volatile register preservation is done in alien callbacks, with the aim of fixing callbacks on PowerPC, and to eventually eliminate assembly code from VM
...
- Simplify calculation of offset in relocation table
- Open-code %alien-callback
- Remove magic_frame hack from context objects
- Move magical return instruction from optimizing compiler backend into callback entry stub
2010-01-03 01:11:51 +13:00
Doug Coleman
1329e0dcb3
remove warning
2009-12-28 10:02:36 -06:00
Doug Coleman
9c192fe170
Merge branch 'master' of git://factorcode.org/git/factor
2009-12-28 09:58:19 -06:00
Doug Coleman
667e871291
avoid integer division in nano_count on windows
2009-12-28 09:56:10 -06:00
Slava Pestov
d0c1c6b766
PowerPC: fix set-callstack primitive and start updating optimizing compiler backend for recent changes
2009-12-28 08:08:15 -06:00
Slava Pestov
faa9d942a2
Updating non-optimizing PowerPC backend for register variable removal (untested)
2009-12-28 12:40:45 +13:00
Slava Pestov
dee6910cfe
Merge branch 'eliminating_register_variables'
2009-12-27 01:29:53 +13:00
Slava Pestov
d5489b3ecd
Updating x86-64 port for global register variable removal
2009-12-27 01:17:42 +13:00
Slava Pestov
8b913f5fc6
Fix bug in c_to_factor
2009-12-26 15:24:46 +13:00
Slava Pestov
2d8b44e5b7
vm: code cleanup
2009-12-26 15:24:21 +13:00
Doug Coleman
92393c7df7
Add 0xe06d7363 to debugger.windows. Remove case 0xe06d7363 from SEH.
2009-12-23 14:04:52 -06:00
Slava Pestov
1453154376
vm: remove VM_ASM_API
2009-12-24 01:37:24 +13:00
Doug Coleman
d7f6c17a71
remove debug output
2009-12-22 14:39:30 -06:00
Doug Coleman
984a458394
try a different approach to fix the windows monotonic counter
2009-12-22 14:36:33 -06:00
Doug Coleman
c92eae83b8
Ignore yet another undocumented exception. Tricks of the trade, I guess.
2009-12-22 13:33:39 -06:00
Slava Pestov
583f999b1e
Merge branch 'master' into eliminating_register_variables
2009-12-22 15:50:15 +13:00
Slava Pestov
c6c351ffb0
vm: if an aging GC is triggered while uninitialized code blocks are in the code heap, the code heap remembered set becomes out of date, resulting in code blocks pointing at invalid data
2009-12-22 15:49:21 +13:00
Slava Pestov
8f449f1a82
Get optimizing compiler working without global register variables in VM
2009-12-22 15:42:49 +13:00
Slava Pestov
a942e2c34d
vm: eliminating register variables work in progress. Works on x86-32 with non-optimizing compiler
2009-12-19 10:59:56 +13:00
Slava Pestov
9a149a47ab
Merge branch 'master' of git://factorcode.org/git/factor
2009-12-15 07:21:17 -05:00
Slava Pestov
31a260b74c
vm: big overhaul of non-optimizing compiler
...
- change some primitives into sub-primitives: fixnum+ fixnum- fixnum* inline-cache-miss inline-cache-miss-tail
- rename some relocation types for clarity
- some other minor re-organizations and cleanups
2009-12-15 07:20:09 -05:00
Slava Pestov
08a81abb7f
Merge branch 'master' of git://factorcode.org/git/factor
2009-12-14 01:09:40 -06:00
Slava Pestov
0244c90414
vm: fep out if monotonic counter decreases
2009-12-14 01:09:04 -06:00
Doug Coleman
1b5a9b42c8
Merge branch 'master' of git://factorcode.org/git/factor
...
Conflicts:
vm/os-windows-nt.cpp
2009-12-13 20:45:40 -06:00
Doug Coleman
6ba4e7c8c4
workaround for QueryPerformanceCounter: if the high part of the count doesn't increment when the low part overflows, keep track of this and add the correction on future calls to nano_count
2009-12-13 20:42:51 -06:00
Doug Coleman
f749d14e86
fix a couple of warnings on win64
2009-12-13 20:00:02 -06:00
Slava Pestov
ffe5fb62ca
vm/os-windows-nt.cpp: fix formatting
2009-12-13 16:52:59 -06:00
Slava Pestov
1994fd1c73
fix compiler warning on linux
2009-12-13 16:10:30 -06:00
Slava Pestov
ace18280e8
vm: OS X version ccheck was failing on 10.5.0
2009-12-11 19:31:19 -05:00
Slava Pestov
705360e1de
vm: grow the heap if a full collection doesn't reclaim enough space
2009-12-05 19:03:53 -05:00
Slava Pestov
20711a9bfd
vm: remove DEFPUSHPOP macro
2009-12-04 20:56:48 -05:00
Slava Pestov
cc7dea4ce1
vm: be more eager to do a full collection to avoid fragmentation leading to heap growth
2009-12-04 03:41:19 -05:00
Slava Pestov
f50e144288
vm: fix walker
2009-12-02 18:43:45 -05:00
Slava Pestov
9fcec9825c
vm: PowerPC fixes
2009-12-02 16:24:42 -06:00
Slava Pestov
f8d6f538fb
Fix typo in instruction_operand::load_value_masked()
2009-12-02 09:24:23 -05:00
Slava Pestov
174e2f5f3d
vm: fix instruction_operand::load_value() for PowerPC relocation classes
2009-12-02 09:20:33 -05:00
Slava Pestov
5180f80180
Get modify-code-heap working if stack traces are stripped (but then it won't update existing code blocks), and rename code_heap::code_heap_free() to code_heap::free()
2009-12-02 05:27:48 -06:00
Slava Pestov
daf47a539c
RT_HERE now takes its argument from the literal table rather than the parameter table, reducing image size further
2009-12-02 04:55:48 -06:00
Slava Pestov
912b1265fc
Split literal table into literal and parameter tables, literal table is discarded after code block initialization
2009-12-02 04:28:15 -06:00
Slava Pestov
c04c15c52d
vm: update callback stub machine code at the end of compaction to prevent it from seeing an inconsistent data stack
2009-12-02 03:31:57 -06:00
Slava Pestov
8a25e8365a
vm: Clean up more code duplication and rename a few methods
2009-12-02 01:17:30 -06:00
Slava Pestov
5533a43a86
vm: factor out common code between image loading and initial code block relocation
2009-12-02 00:54:16 -06:00
Slava Pestov
ca7bca6738
Big cleanup of literal table and relocation-related code
...
- new way to iterate over instruction_operands cleans up relocation code
- move some methods out of the VM class to clean up code
- if debugging is on, die earlier if attempting to allocate inside GC
- callback heap entries are now code_blocks
- replace block_granularity with data_alignment
2009-12-02 00:48:41 -06:00
Slava Pestov
8d41693ee3
vm: growing heap no longer uses relocate_code_block()
2009-11-28 19:48:26 -06:00
Slava Pestov
e33d4d265b
vm: fix some typos
2009-11-27 22:54:24 -06:00
Slava Pestov
3289186df6
Merge branch 'no_literal_table' of git://factorcode.org/git/factor into no_literal_table
2009-11-27 18:33:34 -06:00
Slava Pestov
77e4430c86
Merge branch 'master' of git://factorcode.org/git/factor into no_literal_table
2009-11-27 18:32:21 -06:00
Slava Pestov
3d335474fe
vm: new image relocation that doesn't use literal table
2009-11-27 17:05:08 -06:00
Slava Pestov
a684164783
Fix non-tail recursive inline recursive compilation
2009-11-25 19:12:09 -06:00
Slava Pestov
0ac2a92d56
vm: new implementation of modify-code-heap that doesn't use literal tables
2009-11-25 17:20:48 -06:00
Slava Pestov
19835ab32e
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
0521890f97
vm: flush icache after GC
2009-11-24 21:36:35 -06:00
Slava Pestov
49727354d1
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
3789e75e0c
vm: compaction now updates the needs_fixup set
2009-11-24 19:29:59 -06:00
Slava Pestov
bfa5340ea8
vm: mark sweep now traces code block references; rename embedded_pointer to instruction_operand
2009-11-23 19:17:12 -06:00
Slava Pestov
e66b8673f4
vm: minor GC traces embedded pointers
2009-11-22 13:37:39 -06:00
Slava Pestov
272deedefe
Fix conflict
2009-11-22 02:12:44 -06:00
Doug Coleman
37653c65c2
fix openbsd compile
2009-11-30 12:58:39 -06:00
Doug Coleman
26a9852b8c
fix windows compile error
2009-11-20 04:21:21 -06:00
Slava Pestov
49abe313a3
Clean up startup/shutdown hook code
2009-11-20 00:57:49 -06:00
Doug Coleman
a896eef7b4
remove sleep_micros, add sleeo_nanos to vm
2009-11-19 04:49:29 -06:00
Slava Pestov
fd24ceb79a
vm: fix compilation with DEBUG=1
2009-11-19 02:08:05 -06:00
Slava Pestov
a7d8a35bff
Fix potential assertion failure if GC was invoked while enabling profiling
2009-11-19 01:49:26 -06:00
Doug Coleman
7f4d38b4b3
vm/Config.openbsd: pass in -fno-inline-functions to work around apparent gcc bug
2009-11-18 19:06:26 -06:00
Doug Coleman
addb1c90bb
rename millis to system-millis, micros to system-micros, add nano-count
2009-11-18 15:58:48 -06:00
Doug Coleman
f244eaf6f2
link against librt
2009-11-18 11:09:05 -06:00
Doug Coleman
4b9244ee85
fix current_nanos on windows
2009-11-18 11:04:46 -06:00
Doug Coleman
1861dd2705
initial commit to nanos branch to replace micros
2009-11-18 04:20:05 -06:00
Slava Pestov
bd76bcd52b
vm: fix problem in card marking if first block is free
2009-11-16 00:52:32 -06:00
Doug Coleman
14463be60b
update vm for startup branch
2009-11-15 02:53:02 -06:00
Doug Coleman
3323072613
Merge branch 'master' into startup
...
Conflicts:
core/bootstrap/primitives.factor
vm/run.hpp
2009-11-15 02:52:50 -06:00
Slava Pestov
71dad47a32
vm: record compaction events correctly
2009-11-13 09:29:21 -06:00
Slava Pestov
eb165a5450
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
06fb247b8c
Invalidate inline caches used by call( and execute( when words are redefined
2009-11-12 16:09:07 -06:00
Slava Pestov
61f1f3b473
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
585a1a7fbe
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
81a68ebd36
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
21c165190c
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
68f3087c1c
Faster identity-hashcode primitive; fast path now opencoded by the compiler
2009-11-11 02:27:19 -06:00
Slava Pestov
4168ffbcee
New identity-hashcode primitive
2009-11-10 21:18:54 -06:00
Slava Pestov
9af2fa1957
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
07b56b9806
vm/contexts: cleanup
2009-11-08 19:44:18 -06:00
Slava Pestov
371ff1498d
vm: minor cleanup
2009-11-08 06:08:17 -06:00
Samuel Tardieu
1d21953f95
Add parentheses to prevent GCC warning
2009-11-08 02:01:48 +01:00
Slava Pestov
c434201b33
vm: eliminating literal table work in progress
2009-11-07 16:16:09 -06:00
Slava Pestov
e150707ec5
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
2f8ba13da0
vm: faster data_root and <array> primitive
2009-11-06 05:30:37 -06:00
Slava Pestov
e3d2f4dbfb
vm: report true size of mark stack
2009-11-06 04:15:55 -06:00
Slava Pestov
3e112981b9
vm: fix crash if all-instances primitive triggers a GC
2009-11-06 01:41:11 -06:00
Slava Pestov
858f20ef5f
vm: fix crash in profiler
2009-11-06 01:22:53 -06:00
Slava Pestov
7c0c2fec47
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
66b01c85e9
vm: fix 'become' when aging space is empty
2009-11-05 23:53:53 -06:00
Slava Pestov
4311c335bc
Remove unused error from VM
2009-11-05 21:52:31 -06:00
Slava Pestov
065dac3736
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
fa50753d40
vm: remove some dead code
2009-11-05 19:32:26 -06:00