Joe Groff
8cf18d1a82
remove BSD,solaris,etc. misc platform support code
2011-11-02 17:13:51 -07:00
Joe Groff
82a62181ce
vm: count samples during unoptimized compiler
2011-11-02 13:23:21 -07:00
Joe Groff
e0c68d5a3f
vm: fix scrub-league assert abuse
2011-11-02 13:23:21 -07:00
Joe Groff
2fc6b0b9be
vm: forgot to add atomic.hpp
2011-11-02 13:23:20 -07:00
Joe Groff
73845fdad9
vm: separate 'current_gc_p' from 'current_gc'
...
The 'current_gc' handle doesn't need to be volatile, just the state of GC-ness
2011-11-02 13:23:19 -07:00
Joe Groff
4d39e59054
vm: add atomic::load and atomic::store functions
...
Abstract out the fence-and-load and store-and-fence patterns
2011-11-02 13:23:19 -07:00
Joe Groff
be8db5aed3
vm: sample thread object rather than raw context
2011-11-02 13:23:18 -07:00
Joe Groff
7da8a9776f
vm: sample code block owners instead of blocks
2011-11-02 13:23:17 -07:00
Joe Groff
e880095da3
vm: fix data roots in get-samples primitive
2011-11-02 13:23:17 -07:00
Joe Groff
4037c981eb
vm: die if we fault in a fault
2011-11-02 13:23:16 -07:00
Joe Groff
29fa23c40a
vm: quell MSVC warnings
2011-11-02 13:23:16 -07:00
Joe Groff
30ed9b535b
vm: parameterize sampling rate
2011-11-02 13:23:15 -07:00
Joe Groff
799053661e
vm: better organize atomics and sample counter
2011-11-02 13:23:15 -07:00
Joe Groff
89ea69b61b
vm: fix comments mangled by find & replace
2011-11-02 13:23:14 -07:00
Joe Groff
27ac4c60f4
vm: factor out sample counting code
2011-11-02 13:23:13 -07:00
Joe Groff
baebb317e4
whitespace
2011-11-02 13:23:13 -07:00
Joe Groff
34ea20beca
vm: only show factorbug help the first time
2011-11-02 13:23:13 -07:00
Joe Groff
1a665f3eac
vm: more accurate sample timing on windows
2011-11-02 13:23:12 -07:00
Joe Groff
d9afe92c97
get sampler working under windows
2011-11-02 13:23:12 -07:00
Joe Groff
252915a37c
fix platform dependency in leaf-signal-handler
2011-11-02 13:23:12 -07:00
Joe Groff
abaa051768
vm: fix build on windows
2011-11-02 13:23:12 -07:00
Joe Groff
1351e30e52
vm: sampling profiler timer for windows
...
Spawn a thread and have it spin on the performance counter, triggering safepoints on the main thread every sample time
2011-11-02 13:23:11 -07:00
Joe Groff
125c46c10f
vm: stub out windows sampling timer implementation
...
AFAIK Windows has no equivalent to setitimer. We'll probably need to use a thread that periodically pauses and samples the main VM thread.
2011-11-02 13:23:10 -07:00
Joe Groff
f5cdfaeb2a
vm: count samples from foreign threads
...
On OS X it appears the mach exception thread and libdispatch queue threads occasionally get the SIGALRM from the itimer. Count those as foreign_thread_samples instead of letting the signal kill the process.
2011-11-02 13:23:10 -07:00
Joe Groff
27d7e4af53
vm: actually collect samples and add primitives...
2011-11-02 13:23:10 -07:00
Joe Groff
e10c3183c8
vm: add primitives to lift sample data to factor
2011-11-02 13:23:09 -07:00
Joe Groff
3dd17537eb
vm: write back fixed-up code address to samples
2011-11-02 13:23:09 -07:00
Joe Groff
e3e2788414
vm: walk code roots from sample callstacks
2011-11-02 13:23:08 -07:00
Joe Groff
1089816b21
vm: release memory used by sampler vectors
2011-11-02 13:23:08 -07:00
Joe Groff
40bc8459db
vm: bottom_frame method for contexts
...
ctx->callstack_bottom - 1 -- the fuck does that mean?!
2011-11-02 13:23:07 -07:00
Joe Groff
be5c7476d7
vm: don't allocate callstack samples on data heap
...
Invoking a GC during a safepoint has some complications, so stuff the callstack samples in a vector instead.
2011-11-02 13:23:07 -07:00
Joe Groff
b341b0ce13
vm: only show factorbug basic commands at first
...
"help" brings up the entire command list.
2011-11-02 13:23:07 -07:00
Joe Groff
80fb7788d9
vm: groundwork for sampling profiler
...
Set up the state necessary to collect samples. We still need to add GC support for walking the sample set, and the compiler needs to register GC roots before safepoints as well. We also need primitives to expose the data to Factor for reporting.
2011-11-02 13:23:06 -07:00
Joe Groff
cdfb1b1b94
vm: change "profiler" names to "counting_profiler"
2011-11-02 13:23:05 -07:00
Joe Groff
186bf65a00
constants for special object hardcoded literals
2011-11-02 12:54:50 -07:00
Joe Groff
23208e5697
vm: give factorbug a help command
...
Also change the prompt to "> _" instead of "READY\n_" since it's not 1970 anymore
2011-10-27 21:18:23 -07:00
Joe Groff
2d5360778f
cleanups from code review
2011-10-27 21:18:23 -07:00
Joe Groff
9eee44ce4a
vm: remove half-assed signal queueing scaffolding
...
Should implement it right later. See #297 .
2011-10-27 21:18:22 -07:00
Joe Groff
fb2d105e83
vm: remove some debugging crumbs
2011-10-27 21:18:22 -07:00
Joe Groff
27c43ea6a3
vm: add "gc" command to factorbug
2011-10-27 21:18:22 -07:00
Joe Groff
8e66c7abee
vm: clean up windows ctrl-handler
2011-10-27 21:18:22 -07:00
Joe Groff
331e4264b3
vm: some typos in debug.cpp
2011-10-27 21:18:21 -07:00
Joe Groff
ca0dfc5730
vm: get CtrlHandler working on windows
2011-10-27 21:18:21 -07:00
Joe Groff
6d57eb4f59
vm: update windows for resumable signals
2011-10-27 21:18:21 -07:00
Joe Groff
9541bf14f5
vm: win32 GetCurrentThread is a fake thread handle
...
Open a real thread handle with the necessary permissions to dispatch a handler from the the Ctrl-C handler thread.
2011-10-27 21:18:21 -07:00
Joe Groff
af0f021a94
vm: change factorbug "q" to quit process
...
Also change the docs around so the useful commands are all listed under "Basic commands", and rename the more arcane "s" and "r" dumps to "ds" and "dr".
2011-10-27 21:18:20 -07:00
Joe Groff
5d59faa7d1
vm: move dispatch_signal_handler to cpu-x86.cpp
...
The new signal handler dispatch is logic is CISC-centric; defer fixing it until we find someone who cares
2011-10-27 21:18:20 -07:00
Joe Groff
a6b80f3efa
vm: code_block_for_address method -> code_heap
2011-10-27 21:18:20 -07:00
Joe Groff
03ebb91170
vm: remove signal_from_leaf flag
...
Now that the resuming from the signal handler works within leaf procedures, the flag is no longer necessary.
2011-10-27 21:18:20 -07:00
Joe Groff
11ffea55fc
vm: sniff leaf words walking code heap, not data
2011-10-27 21:18:19 -07:00
Joe Groff
126bf22c16
vm: include quots and profile stubs in leaf search
2011-10-27 21:18:19 -07:00
Joe Groff
ff2d480d98
cpu.x86.32: update for resumable signal handlers
2011-10-27 21:18:19 -07:00
Joe Groff
d6eae2f42d
vm: suppress signal-handler stack frame generation
...
This is a hack; see #295
2011-10-27 21:18:19 -07:00
Joe Groff
7bd7d0234d
vm: turns out adding and subtracting are different
2011-10-27 21:18:19 -07:00
Joe Groff
f284ac2b48
vm: fix foreign segfaults and callstack overflows
2011-10-27 21:18:18 -07:00
Joe Groff
402e1155a5
vm: resumably handle signals from leaf procedures
2011-10-27 21:18:18 -07:00
Joe Groff
1386212d23
vm: dispatch signal handlers through subprimitive
...
We also need to save C ABI volatile registers before calling the signal handler in order to be able to reliably resume. Add signal-handler and leaf-signal-handler subprimitives to preserve volatile registers before invoking the signal handler C function.
2011-10-27 21:18:18 -07:00
Joe Groff
dca0fd3487
vm: Revert extra canary page before callstack
...
This reverts commit 7d5c8d6990385b94569116a23163d7e75ae21f49. We pretty much can't avoid unwinding frames without some more drastic redesign.
2011-10-27 21:14:50 -07:00
Joe Groff
1a673e30f5
vm: comments should be in English
2011-10-27 21:14:50 -07:00
Joe Groff
c3f007ce0a
vm: allocate an extra canary page before callstack
...
This will let us safely unguard the callstack overflow guard page as a grace page so the callstack overflow handler can do its business without discarding frames.
2011-10-27 21:14:49 -07:00
Joe Groff
b0b0905460
vm: add factorbug command to throw exception
...
Also rename "q" to "c" because it "c"ontinues, remove the useless "im" command, and rename the less useful "t" to "trim" so we can use "t" to mean "throw"
2011-10-27 21:14:49 -07:00
Joe Groff
a374c2da05
vm: sketchy signal dispatch from leaf procs
2011-10-27 21:14:49 -07:00
Joe Groff
6e4117035e
vm: factor out dispatch_signal_handler logic
2011-10-27 21:14:49 -07:00
Joe Groff
dc42365007
vm: fep on SIGINT or SIGQUIT instead of exception
...
It's not robust currently to raise an exception because a lot of our code that isn't already written with exceptions in mind breaks. Also, a signal is likely to be received by an FFI callback installed on the IO multiplexer, which will cause Factor to die since the callback cannot handle the exception. We need a more robust solution to dealing with SIGINT.
Also lay some groundwork for counting profile samples and reporting non-interrupting asynchronous signals.
2011-10-27 21:14:49 -07:00
Joe Groff
1dc31d133b
vm: clean up signal handler dispatch
...
Remove the weird and broken functions fix_callstack_top and scrub_return_address. Instead, simply decrement the SP and store the PC from the front end of the signal handler so that the back end can return back into the original context normally. Currently aborts for leaf procedure frames pending a more robust solution.
2011-10-27 21:14:48 -07:00
Joe Groff
92a5b7c300
vm: don't mix iostream and stdio
2011-10-27 21:14:48 -07:00
Joe Groff
3726f61c70
vm: fatal_error if VM-less thread gets a signal
2011-10-27 21:14:48 -07:00
Joe Groff
7f3d70f97f
vm: fix windows compile errors
2011-10-27 21:14:47 -07:00
Joe Groff
d6a06cf5dc
vm: remove unguard-safepoint primitive
2011-10-27 21:14:47 -07:00
Joe Groff
552711e903
vm: block all signals from unix stdin_loop thread
2011-10-27 21:14:47 -07:00
Joe Groff
9865417149
vm: SetConsoleCtrlHandler on windows
2011-10-27 21:14:47 -07:00
Joe Groff
b3e5f75c9e
vm: handle async signals at safepoints on unix
...
Factor now supports the new 4.0BSD feature of "signals".
2011-10-27 21:14:46 -07:00
Joe Groff
9b575730bb
vm: add RT_SAFEPOINT to number_of_parameters()
2011-10-27 21:14:45 -07:00
Joe Groff
e1465308cd
vm: add RT_SAFEPOINT relocation type
2011-10-27 21:14:44 -07:00
Joe Groff
99804d5e3f
vm: code_heap::(un)guard_safepoint methods
2011-10-27 21:14:44 -07:00
Joe Groff
4c8dec1e98
vm: take a page from code_heap for safepoints
2011-10-27 21:14:44 -07:00
Doug Coleman
432927fe5f
Move --no-as-needed to Config.linux since it breaks compilation on mac
2011-10-19 12:09:43 -07:00
Philipp Brüschweiler
c83d6ac411
Config.unix: don't hardcode ui libs, use pkg-config instead
2011-10-19 11:37:21 -07:00
Joe Groff
92d24b0a8f
vm: no-op reallot_array with same size, for real
2011-10-17 21:23:01 -07:00
Joe Groff
59f0b93290
vm: make reallot_array for same size a no-op
2011-10-17 21:23:01 -07:00
Joe Groff
fde782cff6
vm: non-copying primitive_fread
...
primitive_fread now takes a buffer pointer argument and returns a count of bytes read instead of allocating a byte array.
2011-10-17 21:22:57 -07:00
John Benediktsson
4653df21cb
vm: remove math::bignum_producer.
2011-10-11 21:24:38 -07:00
John Benediktsson
afc07c0e05
io.binary: make le> and be> faster (20% and 75%, respectively).
...
Removed primitive byte-array>bignum and digit_stream_to_bignum from vm/.
2011-10-11 21:13:30 -07:00
Slava Pestov
f8e475485a
Add RT_INLINE_CACHE_MISS relocation type to avoid frequent dlsym lookups when compiling PICs. Fixes #123
2011-10-03 00:26:21 -07:00
Slava Pestov
05f7419f2f
Rework non-optimizing compiler backend to use compiler.codegen.relocation
2011-10-03 00:26:21 -07:00
Slava Pestov
daf40ea0c6
Fix infinite loop and empty-dlist error when an error is thrown from a callback running in a thread other than the initial thread. This addresses part of issue #92
2011-10-02 21:59:09 -07:00
Doug Coleman
bf2a96e9e0
Remove Windows CE from core/ basis/ and build-support/
...
Rename the winnt singleton to windows in core/ basis/ extra/
Rename boot images winnt -> windows
Fixes #84 .
2011-09-18 23:19:06 -05:00
Slava Pestov
bbe369ebfa
Fix undefined-symbol reporting on 32-bit architectures; the return address is exactly at the relocation point in this case
2011-09-13 20:43:07 -07:00
Slava Pestov
10845ebfb9
callstack.cpp: fix fat-fingered typo from undefined-symbol change
2011-09-12 23:15:09 -07:00
Slava Pestov
7c3827190b
Tease out symbol name and library in undefined_symbol() handler, for friendlier errors when calling an unresolved C function name. Fixes #93
2011-09-12 00:56:24 -07:00
Slava Pestov
104583f888
Remove inotify system call wrappers. Hopefully everyone is using a recent glibc now. Fixes #86
2011-09-08 22:03:56 -07:00
Slava Pestov
0f5e0eada5
vm: fix high_fragmentation_p assertion
2011-09-05 23:30:28 -07:00
Slava Pestov
83b8717bad
Clean up some GC logic and fix a bug where large object allocation could grow the heap unnecessarily
2011-09-05 16:28:00 -07:00
Erik Charlebois
679b03f8db
Remove unnecessary -std=gnu99
...
Flag isn't needed anymore with g++ and it causes warnings with clang.
2011-06-23 01:17:24 -04:00
Erik Charlebois
64252dbdbc
32 and 64 bit Linux PPC support
2011-05-23 23:36:14 -04:00
Slava Pestov
c36d73e242
Change do-callback to register the current thread with the callback, instead of busy waiting for the current callback to become the right one before returning. Fixes 100% CPU usage issue with system-alert. Thanks to Blei and ex-rzr for doing preliminary analysis of the issue
2011-04-12 21:48:54 -04:00
Slava Pestov
d6fe7f4c28
On Unix, link VM with GTK libraries instead of loading them dynamically
2011-02-27 20:01:54 -06:00
Slava Pestov
f27080498d
Remove bignum>float VM primitive, and use bignum/f to implement >float on bignums instead, for a slight accuracy gain. Also, bignum/f now has a more efficient post-scaling algorithm to break the circular dependency on bignum>float
2010-11-24 22:41:15 -08:00
Slava Pestov
813e13140a
vm: fix 64-bit regression
2010-10-09 15:14:14 -07:00
Slava Pestov
0fc8ee8250
Fix win64 compile error
2010-10-09 16:03:46 -05:00