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
Erik Charlebois
64252dbdbc
32 and 64 bit Linux PPC support
2011-05-23 23:36:14 -04:00
Slava Pestov
75560699ea
Move <ref>, deref and little-endian? from alien.c-types to alien.data, remove <c-object>
2010-12-25 16:55:36 -08:00
Doug Coleman
67c37591ca
Remove <uint> *uint and friends. Hopefully remove the last usages of these words
2010-10-25 15:54:42 -05:00
Slava Pestov
6b5fffc026
compiler: preliminary implementation of tracking derived pointers in GC maps
2010-09-27 20:12:44 -07:00
Slava Pestov
d2cf2d8f92
Rename get-fpu-state entry point to fpu-state, and fix stack-checker unit tests
2010-09-04 12:58:59 -07:00
Slava Pestov
cdc9538540
cpu.x86.64: fix bootstrap
2010-09-02 21:17:14 -07:00
Slava Pestov
1818bcb780
Fix three problems discovered by running math.floats.env tests in a loop:
...
- Crash if allocating error triggers a GC from a signal/SEH handler
- Crash if GC runs with floating point traps enabled on Windows
- Floating point traps didn't prettyprint properly
2010-09-02 22:57:14 -05:00
Slava Pestov
2abda04743
cpu.x86.32: commit 05ba77262a
only fixed the start-context-and-delete callframe leak on x86-64. Fix it on x86-32 and add a regression test
2010-08-22 19:30:54 -07:00
Slava Pestov
d2dd184d58
Officially drop PowerPC port
2010-08-15 20:10:11 -07:00
Joe Groff
9472c866da
cpu.x86.64: rescue from the perils of cut and paste code (fix bug reported by x6j8x)
2010-08-14 09:14:22 -07:00
Slava Pestov
1985705413
compiler: now that FFI has been deconcatenatized, we no longer need the special ##unary-float-function and ##binary-float-function fastpaths
2010-08-13 23:59:19 -07:00
Slava Pestov
b5fc39c198
compiler.cfg: Reading the return value of a float-returning function on x86-32 had a side effect of popping the x87 stack, so it was not correct for DCE to just eliminate this if the return value was not used. Fix this by adding a new dead-outputs slot to alien-call-insns and having DCE move dead returns there
2010-08-13 23:19:56 -07:00
Slava Pestov
42b858b3f0
math.libm: fix regression: fsqrt intrinsic was not working ever since change was made to inline FUNCTION: bodies
2010-08-12 21:41:57 -07:00
Slava Pestov
b346cbd6b0
cpu.x86.32: fix 32-bit bootstrap
2010-08-02 20:51:29 -04:00
Slava Pestov
451237a028
Fix start-context-and-delete sub-primitive (reported by Sascha Matzke)
2010-08-02 20:28:23 -04:00
Slava Pestov
f2646fc92c
cpu.x86: save context before calling new_context() since it can trigger GC (bug reported by Sascha Matzke)
2010-07-30 01:07:53 -04:00
Slava Pestov
168dd1f825
FFI rewrite part 7: compile callback bodies with the optimizing compiler
2010-07-28 00:49:26 -04:00
Slava Pestov
0fbe78be00
cpu.x86.64: fix calling varargs functions
2010-07-19 16:03:39 -04:00
Slava Pestov
b23aac1beb
compiler.cfg: open-code parameter boxing and unboxing for certain C types
2010-07-19 10:25:13 -04:00
Slava Pestov
e5dd21b0b9
compiler.cfg: nuke ##allot-byte-array instruction
2010-07-16 19:57:45 -04:00
Slava Pestov
0fd636b4b9
compiler.cfg: ##unbox-long-long can have multiple outputs now, clean up long long parameter passing code using this
2010-07-15 19:49:29 -04:00
Slava Pestov
5e13318988
cpu.x86.32: fix %binary-float-function
2010-07-15 03:09:06 -04:00
Slava Pestov
e7191998f8
cpu.x86.64: fix typos
2010-07-14 17:59:51 -04:00
Slava Pestov
867530223c
cpu.x86: fix %load/store-stack-param for 32-bit
2010-07-14 17:50:40 -04:00
Slava Pestov
e27adb2830
compiler: re-architect low-level optimizer to allow more than one output value per instruction
2010-07-13 07:40:14 -04:00
Joe Groff
732befe272
cpu.x86.assembler: add MOVQ xmm, xmm/m64 and MOVQ xmm/m64, xmm instructions
2010-07-08 10:19:11 -07:00
Slava Pestov
a55c8ee671
FFI rewrite part 6: deconcatenatize
2010-07-02 15:44:12 -04:00
Slava Pestov
e86f434f26
Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction
2010-06-14 19:39:46 -04:00
Slava Pestov
70b8a74208
vm: have to be extra careful when messing with return addresses
2010-06-13 18:12:57 -04:00
Slava Pestov
3f28c0e7f5
vm: context switching needs to scrub the return address
2010-06-12 19:54:31 -04:00
Slava Pestov
8ed4760b51
cpu.x86: combine 32-bit and 64-bit %dispatch template
2010-06-11 21:52:38 -04:00
Slava Pestov
806e54630a
GC maps for more compact inline GC checks
2010-06-11 20:06:00 -04:00
Joe Groff
7fe04fa8ee
compiler.cfg.intrinsics.simd: intrinsic support for double-2>float-4 conversion
2010-06-01 00:34:50 -07:00
Slava Pestov
48f87e03e3
cpu.x86: fix callbacks receiving stack parameters on Win64
2010-05-23 23:08:07 -04:00
Slava Pestov
c9ad0856d5
cpu.x86.64: callback prologue was clobbering 5th parameter register on x86-64
2010-05-23 03:00:53 -04:00
Slava Pestov
ba7cb61133
Stack allocation improvements
...
- New with-out-parameters combinator
- Inhibit tail call optimization in frames with local allocation, to ensure that passing a stack allocated value to the last word in the quotation works
- local allocations are now aligned properly
- spill slots are now aligned properly aligned in frames which have parameter and local allocation areas
2010-05-22 02:37:00 -04:00
Slava Pestov
9730ec1707
cpu.x86.32: fix load error
2010-05-19 01:29:52 -04:00
Slava Pestov
91cd3b854d
Use ##local-allot to simplify longlong unboxing
2010-05-19 01:07:22 -04:00
Slava Pestov
77516c6932
compiler.cfg: generalize ##prepare-struct-caller instruction to alloca()-like ##local-allot
2010-05-19 00:33:15 -04:00
Slava Pestov
b67080b69d
cpu.x86.assembler: drop useless ST0 operand from some x87 instructions
2010-05-18 19:37:59 -04:00
Slava Pestov
11511167e2
cpu.x86.x87: compares were clobbering ST0
2010-05-18 19:18:53 -04:00
Slava Pestov
2dde83767c
cpu.x86.assembler: fix typo
2010-05-18 17:59:34 -04:00
Slava Pestov
0aa6ae0feb
cpu.x86.x87: use FISTPD to convert floats to integers, instead of the SSE3 instruction FISTTPD
2010-05-18 17:10:58 -04:00
Slava Pestov
f5a951801e
cpu.x86.assembler: AH CH DH BH register operands now work properly
2010-05-18 17:10:32 -04:00
Slava Pestov
3104ad779a
cpu.x86.64: call check-sse to ensure that cpu.x86.sse is loaded
2010-05-17 11:43:42 -04:00
Slava Pestov
6eaf2d7534
cpu.x86: add x87 codegen for Model T enthusiasts
2010-05-17 11:35:47 -04:00
Joe Groff
93abc7d169
cpu.x86.assembler: a choice selection of x87 instructions
2010-05-17 02:02:40 -07:00
Slava Pestov
db5b33977b
cpu.x86.32: clean up %unary/binary-float-function
2010-05-17 04:03:13 -04:00
Slava Pestov
7ff309d50e
cpu.x86: get rid of this extra-stack-space nonsense
2010-05-17 02:14:44 -04:00
Slava Pestov
3f8e13bf66
compiler.cfg: refactor stack frame code and fix frame pointer usage in callbacks
2010-05-16 21:04:40 -04:00
Slava Pestov
a7b5957f6d
compiler: hack to make XCreateIC() work on x86-64
2010-05-16 04:49:53 -04:00
Slava Pestov
8ebecac4d2
Merge branch 'master' of git://factorcode.org/git/factor
2010-05-16 04:10:03 -04:00
Slava Pestov
e6abc0be15
Fixes for FFI changes
2010-05-16 04:09:47 -04:00
Joe Groff
645164188d
compiler.cfg.instructions: ##select-vector instruction mapping to SSE4 PEXTR*
2010-05-16 00:50:19 -07:00
Slava Pestov
5b48cd2a63
FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing
2010-05-16 03:43:23 -04:00
Joe Groff
8c878ada17
compiler.cfg.instructions: ##gather-int-vector-2/4 instructions that map to SSE4 PINSR/PEXTR
2010-05-15 23:48:22 -07:00
Joe Groff
7c0cd6dc37
cpu.x86: fix bootstrap load error
2010-05-15 15:28:22 -07:00
Joe Groff
3de020c18a
cpu.x86: don't enable bit-count intrinsic by default
2010-05-15 14:52:00 -07:00
Joe Groff
3956dd1516
cpu.x86.features: ( int alien-assembly ) c-bool> ==> ( bool alien-assembly )
2010-05-15 14:33:19 -07:00
Joe Groff
009408dd11
cpu.x86: enable bit-count intrinsic if POPCNT available
2010-05-15 14:00:12 -07:00
Joe Groff
7fec53b509
compiler.cfg.instructions: ##bit-count insn
2010-05-15 13:57:35 -07:00
Joe Groff
c00272d80a
cpu.x86.features: add popcnt? test
2010-05-15 13:26:14 -07:00
Joe Groff
d5b7ec3348
cpu.x86.assembler: SETcc instructions
2010-05-15 13:14:27 -07:00
Joe Groff
986ed057d8
cpu.x86.assembler: BT family instructions
2010-05-15 13:08:22 -07:00
Slava Pestov
62eadda2aa
cpu.x86.bootstrap: use TEST instruction
2010-05-14 18:37:10 -04:00
Slava Pestov
5a67711bfd
compiler.cfg: use x86 TEST instruction to optimize 'bitand 0 ='
2010-05-14 18:37:06 -04:00
Joe Groff
3766abd65e
compiler.cfg.instructions: ##shuffle-vector-halves-imm insn to map to SSE's two-input SHUFPS/SHUFPD
2010-05-14 00:20:21 -07:00
Slava Pestov
4a98278720
cpu.x86.32: check for SSE2 on bootstrap since Factor now requires it
2010-05-13 18:25:46 -04:00
Slava Pestov
42b0d456cd
Refactor x86-32 stack cleanup logic
2010-05-12 02:09:11 -04:00
Slava Pestov
f89b85db7b
Temporary fixes for x86-32 until FFI boxing is rewritten
2010-05-12 01:41:49 -04:00
Slava Pestov
1c76c87c5c
cpu.x86.64: fix typo
2010-05-11 22:29:46 -04:00
Slava Pestov
ee0640f176
Move flatten-c-type to death row so that it can be executed in part 5
2010-05-11 22:26:31 -04:00
Slava Pestov
eb802208d1
FFI rewrite part 4: parameter and return value unboxing redesign
2010-05-11 19:11:44 -04:00