John Benediktsson
2f325e4fee
using if-zero in even more places.
2012-07-16 19:38:49 -07:00
John Benediktsson
d1f3b326e5
math: using if-zero in more places.
2012-06-18 14:32:39 -07:00
Joe Groff
9b56fbb1c1
cpu.x86.32.bootstrap: oops, meant bootstrap-cell
2011-12-19 20:55:07 -08:00
Joe Groff
bc3f34cbd7
cpu.x86.32.bootstrap: update unwind-native-frames
...
The arguments passed from C are in a different position now.
2011-12-19 18:42:14 -08:00
Joe Groff
b321c5656e
cpu.x86.64: define jit-load-vm as a no-op
...
This was the signal handler prolog code can be shared completely between x86.32 and x86.64.
2011-12-14 11:33:05 -08:00
Joe Groff
d62a0b28e6
oops, handler still need to jit-load-vm on x86-32
2011-12-14 09:56:50 -08:00
Joe Groff
7c9332e966
cpu.x86.*: clean up signal handler prolog code
...
Also bump the signal handler frame sizes up again since it looks like we shrank them too much.
2011-12-14 09:56:50 -08:00
Joe Groff
2eba1b5449
cpu.x86: reduce compiled frames by 2 cells too
2011-12-14 09:56:49 -08:00
Joe Groff
079025559d
simplify function prologs
2011-12-14 09:56:49 -08:00
Joe Groff
ee656387ea
cpu.*.bootstrap: return address for (set-context)
...
Instead of pushing zero as the fake return address for a set-context call, push an address that points back into the primitive so that callstack walking can match the frame back to the subprimitive.
2011-12-14 09:56:46 -08:00
Joe Groff
1911905c6b
vm: frame size for signal handler code blocks
2011-12-14 09:56:46 -08:00
Joe Groff
e21f316583
vm: store stack frame size in code blocks
...
Change modify-code-heap primitive so it takes a sixth element in each array for the frame size.
2011-12-14 09:56:45 -08:00
Joe Groff
d927a070ed
cpu.x86: enable POPCNT with a flag
...
If bootstrapped with '-enable-popcnt' and the host CPU supports it, enable the POPCNT-based fixnum-bit-count intrinsic. Fixes #436 .
2011-12-12 16:43:49 -08:00
Joe Groff
943596575a
use radix literals
2011-11-23 19:03:40 -08:00
Joe Groff
6498bc65ce
compiler: emit safepoints in optimized prologs
2011-11-23 11:11:25 -08:00
Joe Groff
248066c710
code beautification
2011-11-13 16:10:26 -08:00
Joe Groff
d79b462f75
compiler: add intrinsic for PMOVMSKB/MOVMSKP[SD]
...
Combined with a fast bit-count this will let us rice byte-counting.
2011-11-13 16:10:20 -08:00
Joe Groff
e0dc236725
cpu.*.bootstrap: clear faulting flag directly
...
No reason to go through a safepoint in unwind-native-frames really.
2011-11-12 13:02:57 -08:00
Joe Groff
e24400679f
vm: more defense against multi-faulting
...
* Clear faulting_p from a safepoint rather than inside general_error, because jumping into unwind-native-frames could blow up.
* Handle multiple faults from fatal_error by breakpointing. Is there anything else we can safely do at that point?
* Verify memory protection faults in the top half of the signal handlers because signal dispatch could fault. Treat memory faults during gc or fep as fatal errors.
* Add a function factor_vm::abort() that restores the default SIGABRT handler and ::abort()s. Use it from fatal_error() so we get useful context from gdb and so the user gets feedback from the system crash reporter that Factor blew up and didn't just disappear.
* In factorbug(), don't proceed with .s .r .c if it would be unsafe to do so.
* Don't pile on signals if we've already called fatal_error().
2011-11-12 13:02:57 -08:00
Joe Groff
c31530caec
vm: strip out call-counting profiler
...
This makes the separate "code" and "entry_point" fields in word and quotation redundant, so also remove them to reclaim an additional cell per word and quotation object, which should help with #318 .
2011-11-10 16:01:07 -08:00
Joe Groff
c736b04ada
cpu.x86.*.bootstrap: save flags in signal-handlers
2011-11-04 11:56:01 -07:00
Joe Groff
a934b7f3e5
cpu.x86.bootstrap: cell -> bootstrap-cell
2011-11-04 11:54:40 -07:00
Joe Groff
4ef2a9b4f0
cpu.x86.assembler: PUSHF, POPF instructions
2011-11-04 11:23:11 -07:00
Joe Groff
d9293337bb
cpu.x86.64.bootstrap: save all the regs on signal
...
Appears to fix another sporadic crash from mason on x86-64. There's no reason to cut corners here, really.
2011-11-04 10:01:56 -07:00
Joe Groff
1bc623167f
cpu.x86.bootstrap: don't safepoint in a safepoint
...
Safepointing in the signal-handler primitive causes a crash if the safepoint is guarded and the signal being handled was raised by a safepoint. Put our own RET in the subprimitive to bail out before the standard epilog gets written out. This tentatively appears to fix #349 .
2011-11-03 20:19:38 -07:00
Joe Groff
e201f3562f
cpu.x86.32.bootstrap: typo
2011-11-03 13:07:13 -07:00
Joe Groff
6bb46a3f1e
vm: always generate safepoints in jit
...
Even if there's no stack frame we still need to safepoint before leaving the function. Fixes #332 .
2011-11-03 11:57:43 -07:00
Joe Groff
8cf18d1a82
remove BSD,solaris,etc. misc platform support code
2011-11-02 17:13:51 -07:00
Joe Groff
252915a37c
fix platform dependency in leaf-signal-handler
2011-11-02 13:23:12 -07:00
Joe Groff
9f6f36fdec
cpu.x86.bootstrap: simplify leaf-signal-handler
...
We can use RET (stack-frame-size - cell) instead of doing stack gymnastics.
2011-11-02 13:23:08 -07:00
Doug Coleman
94db86a6db
Make "foo.private" require load foo instead.
...
Move require from vocabs.loader to vocabs. Update everything.
Fixes #201 .
2011-11-02 11:50:03 -07:00
Joe Groff
2d5360778f
cleanups from code review
2011-10-27 21:18:23 -07:00
Joe Groff
c70a1004f8
cpu.x86.64: also must save ctx-reg
2011-10-27 21:18:21 -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
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
68518e741e
cpu.x86.(32,64).bootstrap: get rid of PUSH malarky
...
In the function prologue, move the stack pointer once after the stack frame is set up instead of PUSHing the stack frame piece by piece.
2011-10-27 21:14:50 -07:00
Joe Groff
0c022f2454
compiler: add ##safepoint IR insn
2011-10-27 21:14:46 -07:00
Joe Groff
ae1a903c4e
cpu.x86.assembler: add MOVABS instruction
...
MOVABS generates the one-byte opcode version of MOV eAX, [absolute] or MOV [absolute], eAX, which saves a byte per safepoint on x86-32.
2011-10-27 21:14:45 -07:00
Joe Groff
4be5eadb34
cpu.x86.bootstrap: add safepoint to jit-epilog
2011-10-27 21:14:45 -07:00
Doug Coleman
d5dc5cfa2c
Fix 32bit platform bootstrap
2011-10-24 16:24:01 -07:00
Doug Coleman
0d059e0f19
Found a few more places to use lookup-c-type
2011-10-24 15:58:40 -07:00
Doug Coleman
ff69e2f240
Rename c-type to lookup-c-type. Fixes #230 .
2011-10-24 14:37:24 -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
b89e9a549b
Split up compiler.codegen.fixup into compiler.codegen.{gc-maps,labels,relocation}
2011-10-03 00:25:47 -07:00
Doug Coleman
671f19d70f
Remove all non-core uses of (scan-token)
...
Add scan-datum
Add scan-number
Document more words
Fixes #225 .
2011-10-02 12:00:08 -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
69419dba26
cpu.ppc: add 'not loaded' tags so that load-all doesn't break an x86 image
2011-08-24 23:52:02 -07:00