Slava Pestov
f828f9fdaa
Fiddle with register assignments in non-optimizing x86-32 backend
2010-04-10 00:10:05 -07:00
Slava Pestov
430a05dcea
Store stack bounds in TIB on win64 to make C++ exceptions work
2010-04-05 19:07:10 -04:00
Slava Pestov
c0af678c5b
cpu.x86.assembler: add support for absolute addressing on x86-64; [RIP+] now behaves like [] did, and [] now does absolute addressing just like in 32-bit mode
2010-04-04 19:42:57 -04:00
Slava Pestov
b16d91576c
cpu.x86.64: fix typo that caused bootstrap crash
2010-04-03 21:11:04 -04:00
Slava Pestov
74640b7f71
Get green threads working on Windows
...
- store stack base and limit in TIB
- set up a frame-based structured exception handler in each context's callstack
- boot.x86.32.image has now been replaced by boot.winnt-x86.32.image and boot.unix-x86.32.image
2010-04-03 20:24:33 -04:00
Slava Pestov
0faa3bcf4a
vm: pre-allocate context alien
2010-04-02 00:02:21 -04:00
Slava Pestov
044171e6b9
cpu.ppc: fix optimizing compiler backend
2010-04-01 21:41:13 -05:00
Slava Pestov
2cab0bb86c
cpu.ppc: stick old stack pointer in a register for use by callbacks
2010-04-01 22:39:46 -04:00
Slava Pestov
eceabbc57e
compiler: new set-special-object intrinsic; more efficient special-object intrinsic
2010-04-01 20:09:14 -04:00
Slava Pestov
1f9fbd22eb
cpu.ppc: updating optimizing compiler backend for recent changes (untested)
2010-04-01 00:22:10 -04:00
Slava Pestov
1e1425a6e1
cpu.ppc: non-optimizing compiler backend fixes
2010-04-01 00:21:41 -04:00
Slava Pestov
7d24459bb8
cpu.x86.assembler: add segment override prefixes
2010-03-31 20:47:13 -04:00
Slava Pestov
ef53e6ecd5
cpu.x86.64: eliminate useless instruction from primitive call sequence for a marginal to non-existent gain
2010-03-31 19:32:36 -04:00
Slava Pestov
4b1361833e
cpu.ppc: updating non-optimizing compiler backend for green threads (untested)
2010-03-31 15:19:14 -04:00
Slava Pestov
8f0487f1c3
cpu.x86: remove useless crap from c-to-factor sub-primitive
2010-03-31 15:19:00 -04:00
Slava Pestov
fb2ecab614
threads: delete old contexts immediately instead of handing them off to a 'context recycler' thread
2010-03-30 21:47:48 -04:00
Slava Pestov
e859a32096
cpu.x86.bootstrap: fix jit-profiling regression
2010-03-28 08:29:55 -04:00
Slava Pestov
b6dfdcb909
set-context and start-context primitives can now pass parameters around
2010-03-27 08:13:57 -04:00
Slava Pestov
1717b8d0f7
Implement start-context and set-context primitives
2010-03-27 02:56:11 -04:00
Slava Pestov
560c119cd2
vm: actually use context callstacks when running code
2010-03-26 22:44:43 -04:00
Slava Pestov
f9d6191c4b
cpu.ppc: fix string c-type usage
2010-02-22 13:18:45 +13:00
Slava Pestov
95bfc8a240
vocabs.metadata: replace unportable tag with a platforms.txt file for more fine-grained control. Rename unportable tag to untested for remaining cases
2010-02-20 13:30:49 +13:00
Slava Pestov
a3b74d88c9
cpu.architecture: rep-length now works in deployed images
2010-02-11 18:11:47 +13:00
Slava Pestov
d5a25f99bf
cpu.x86.64: inline cache miss blocks have a prolog generated in the middle of a procedure; undo a recent change to non-optimizing backend to fix random crashes
2010-02-06 18:45:27 +13:00
Slava Pestov
daefa86b6d
cpu.ppc: needs same fix for jit-profiling as on x86-64
2010-02-06 18:45:26 +13:00
Slava Pestov
aa3d65272a
cpu.x86: fix crashes when using certain features (threads, errors, etc) with profiling enabled on x86-64. The profiling stub was clobbering an argument for the unwind_native_frames() entry point
2010-02-05 20:52:19 +13:00
Slava Pestov
034cf391b1
cpu.ppc: final fix
2010-02-03 13:37:12 -06:00
Slava Pestov
5fbb8c8bc7
cpu.ppc: another fix
2010-02-04 08:19:59 +13:00
Slava Pestov
50c2a5ae84
cpu.ppc: load fixes
2010-02-04 08:08:31 +13: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
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
Slava Pestov
942f6e0943
Update Win64 support
2010-01-25 15:39:34 +13:00
Slava Pestov
892522f8bd
alien.c-types: ensure that long and ulong types are defined with define-primitive-type and not typedef
2010-01-23 00:15:08 +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
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
7bf76b9f13
PowerPC optimizing compiler backend fixes
2010-01-12 08:02:10 -06:00
Slava Pestov
988c8d0601
More PowerPC non-optimizing compiler backend fixes
2010-01-13 03:09:43 +13:00
Slava Pestov
85a45d63d9
unwind-stack-frames didn't load VM pointer into the VM register on PowerPC and x86-64, and so if C code had clobbered this register it would crash
2010-01-12 16:31:10 +13:00
Slava Pestov
87f6efc8ec
cpu.ppc: fix some typos in non-optimizing backend
2010-01-11 14:15:41 +13:00
Slava Pestov
8d34a0f3c1
Store VM object in a register on x86-64
2010-01-11 01:20:32 +13:00
Slava Pestov
5b58117be1
cpu.x86: c-to-factor needs to deal with the fact that vm-reg might have been clobbered
2010-01-09 19:09:48 +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
1f88a925b4
Fix set-callstack primitive on Windows
2010-01-07 19:31:15 +13:00
Slava Pestov
a04b85a45e
cpu.x86: sse_version was renamed to (sse-version)
2010-01-07 18:30:01 +13:00
Slava Pestov
0f29fed1f1
cpu.x86: add some alien-assembly unit tests
2010-01-07 17:59:17 +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
9508a5a083
cpu.x86: don't have to pass VM pointer to quotations anymore
2010-01-06 23:42:00 +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