Slava Pestov
34792a9f23
Remove >r/r>
2008-12-17 19:17:37 -06:00
Slava Pestov
c5160d76e9
Merge qualified, alias, symbols, constants into core
2008-12-17 18:10:01 -06:00
Slava Pestov
97fd662d61
Clean up PPC backend a bit
2008-12-16 02:03:21 -06:00
Slava Pestov
0021cde743
Fix more compile errors
2008-12-15 22:21:56 -06:00
Slava Pestov
5a45119252
Fix jit-dispatch on x86-64; was broken on windows
2008-12-15 20:55:24 -06:00
Slava Pestov
09c60f7e90
Fix some vocabularies for new requirement that inline words have a stack effect declaration
2008-12-15 20:31:55 -06:00
Slava Pestov
d821cd7281
Fix win64 bootstrap
2008-12-10 01:19:22 -06:00
Slava Pestov
4b927f732f
Clean up JIT backend a little
2008-12-09 17:14:17 -06:00
Slava Pestov
05e4626c49
Clean up
2008-12-09 03:22:09 -06:00
Slava Pestov
0359ec8eac
Fix PowerPC backend again
2008-12-06 16:57:28 -06:00
Slava Pestov
8a8f0c925c
Use BSR instruction to implement fixnum-log2 intrinsic
2008-12-06 15:31:17 -06:00
Slava Pestov
d2ce4355f8
Fixing PPC backend
2008-12-06 15:30:40 -06:00
Slava Pestov
a56d480aa6
Various optimizations leading to a 10% speedup on compiling empty EBNF parser:
...
- open-code getenv primitive
- inline tuple predicates in finalization
- faster partial dispatch
- faster built-in type predicates
- faster tuple predicates
- faster lo-tag dispatch
- compile V{ } clone and H{ } clone more efficiently
- add fixnum fast-path to =; avoid indirect branch if two fixnums not eq
- faster >alist on hashtables
2008-12-06 09:16:29 -06:00
Slava Pestov
b06cfc6225
Update ppc backend for recent string intrinsic changes
2008-12-06 00:12:07 -06:00
Slava Pestov
82cf6530c6
set-string-nth-fast intrinsic was busted
2008-12-05 23:52:09 -06:00
Slava Pestov
e256846acd
Tweak string representation; high bit indicates if character has high bits in aux vector. Avoids memory access in common case. Split set-string-nth into two primitives; set-string-nth-fast is open-coded by optimizing compiler. 13% improvement on reverse-complement
2008-12-05 06:38:51 -06:00
Slava Pestov
e5ed7447ed
Removing more >r/r> usages
2008-12-03 08:46:16 -06:00
Slava Pestov
e4db2afb7e
Update cpu.x86.assembler to use dip instead of >r/r>
2008-12-02 03:10:01 -06:00
Slava Pestov
a558f91d5d
Better command-line processing
2008-12-01 16:10:48 -06:00
Slava Pestov
3e25d14e54
Code cleanup: refactoring usages of rot and -rot to use newer idioms instead
2008-11-30 17:47:29 -06:00
Slava Pestov
f55c5d1bd0
Fix compile error
2008-11-30 11:37:39 -06:00
Slava Pestov
c7c3bbc5f5
Fix register assignments on 64-bit x86
2008-11-30 08:05:36 -06:00
sheeple
6400085bea
Fix bootstrap, add a unit test
2008-11-30 07:36:29 -06:00
sheeple
ff000f3e82
Merge branch 'master' of git://factorcode.org/git/factor
2008-11-30 07:25:37 -06:00
Slava Pestov
e7f4563374
fixnum* intrinsic for x86
2008-11-30 07:26:49 -06:00
sheeple
abc486c342
Subtraction overflow was wrong way round on PowerPC
2008-11-30 06:08:16 -06:00
sheeple
26c002d23f
Fix fixnum* problem; result was shifted to the right by 3 bits if both input registers were equal
2008-11-29 00:44:46 -06:00
U-SLAVA-DFB8FF805\Slava
6f0ec04310
Fix stack effect of param-reg-[12] on x86.3C2
2008-11-24 19:09:55 -06:00
Slava Pestov
9081247e34
Merge branch 'master' of git://factorcode.org/git/factor into faster_overflow_checks
2008-11-28 22:26:49 -06:00
sheeple
2b1a90e90a
Fixing PowerPC arithmetic primitives
2008-11-28 22:22:26 -06:00
Slava Pestov
bac609d7af
Implement both-fixnums? sub-primitive for PowerPC
2008-11-28 21:18:42 -06:00
Slava Pestov
68dd6cc35a
Working on PowerPC overflow checks
2008-11-28 20:02:50 -06:00
Slava Pestov
eb8c621b6f
Faster generic arithmetic on fiixnums: both-fixnums? sub-primitive performs a check if the top two stack items are both fixnums with a single conditional branch
2008-11-28 08:35:02 -06:00
Slava Pestov
f44506089d
More work on overflow instructions: don't need temp register anymore, add -tail variants which don't need stack frame
2008-11-28 06:36:30 -06:00
Slava Pestov
5634becda1
##fixnum-add, ##fixnum-sub instructions open-code overflow check
2008-11-28 05:33:58 -06:00
Slava Pestov
6dfce7d4e7
load-locals is a primitive now, change semantics of get-locals to bum out 2 instructions from the sub-primitive
2008-11-27 22:30:29 -06:00
Slava Pestov
12d4f684ec
Fix <long>, <ulong>, *long, *ulong on win64
2008-11-24 16:28:56 -06:00
Slava Pestov
e62a558cf4
Merge branch 'master' of git://factorcode.org/git/factor
2008-11-24 12:01:55 -06:00
Slava Pestov
d849287779
Fix fixnum/i-fast and fixnum/md-fast on PowerPC
2008-11-24 12:01:08 -06:00
sheeple
6c568d5c3d
Fix PowerPC bootstrap
2008-11-24 11:34:18 -06:00
Slava Pestov
ab689c098b
Clean up direct literal code and make a first attempt at PowerPC support
2008-11-24 08:16:14 -06:00
Slava Pestov
2aaf860f47
Experimental optimizations
2008-11-24 06:40:51 -06:00
Slava Pestov
dbf52c6176
Fix PowerPC bootstrap
2008-11-24 01:45:36 -06:00
Slava Pestov
87bc7d8c8b
Update PPC non-optimizing compiler backend
2008-11-24 00:29:34 -06:00
Slava Pestov
d86524f4bc
Non-optimizing compiler now compiles dip, 2dip, 3dip, if, with direct branches instead of indirect branches. 8% bootstrap time improvement on Core Duo 2
2008-11-24 00:23:17 -06:00
Slava Pestov
60964487e0
Fix PowerPC dip/2dip/3dip
2008-11-23 04:14:17 -06:00
Slava Pestov
616df5da22
PowerPC dip/2dip/3dip JIT intrinsics (untested)
2008-11-23 03:04:45 -06:00
Slava Pestov
a4d9cdfeb3
Refactor all usages of >r/r> in core to use dip, 2dip, 3dip
...
Non-optimizing compiler now special-cases dip, 2dip, 3dip following a
literal quotation: this allows us to break the dip/slip meta-circle
without explicit calls to >r/r>
2008-11-23 02:44:56 -06:00
Slava Pestov
303b3f2f83
Fix compile error in x86 bootstrap
2008-11-23 00:09:23 -06:00
Slava Pestov
d5559d4132
Add fixnum/mod and fixnum/i subprimitives on PowerPC
2008-11-21 02:24:37 -06:00
Slava Pestov
ae4f9a2809
Add fixnum/mod-fast and fixnum/i-fast subprimitives
2008-11-21 02:11:36 -06:00
unknown
ccd13ce975
Define intptr_t type
2008-11-17 18:42:10 -06:00
Slava Pestov
20f5541d35
Refactoring FFI for Win64
2008-11-17 13:34:37 -06:00
Slava Pestov
eef45a1cc3
Tweak PowerPC %dispatch
2008-11-13 05:58:49 -06:00
Slava Pestov
a14e1ebcb5
Fix PowerPC bootstrap
2008-11-13 05:55:34 -06:00
Slava Pestov
eb05dd3a12
Optimize a ##dispatch that is applied to the result of a ##sub-imm or ##add-imm; this eliminates an instruction from the common 1 fixnum-fast { ... } dispatch and 8 fixnum-fast { ... } dispatch code sequences appearing in generic word expansions
2008-11-13 04:16:08 -06:00
Slava Pestov
029ee67525
Fix ppc make-image
2008-11-13 04:12:09 -06:00
Slava Pestov
cfa82cb474
New calling convention for VM primitives:
...
instead of the Factor side passing the stack pointer as the first parameter, and having the VM save it to stack_chain->top, we instead have the Factor side save it. Eliminates a lot of crud in the VM
2008-11-13 03:20:34 -06:00
sheeple
ffe4bd6787
Various updates
2008-11-10 03:18:58 -06:00
Slava Pestov
28e397420d
Fix USING:
2008-11-08 21:43:55 -06:00
unknown
7a6a280b5c
Fix conflict
2008-11-08 21:41:33 -06:00
unknown
f7fe84e563
Working on Win64 FFI
2008-11-08 21:40:47 -06:00
Slava Pestov
65dea0aa26
PowerPC backend fixes
2008-11-08 20:36:14 -06:00
Slava Pestov
9cc193ea5b
Add unportable tags and fix my-arch word
2008-11-07 22:37:40 -06:00
Slava Pestov
eb83b542d6
Fix unix x86.64 bootstrap
2008-11-07 21:54:13 -06:00
unknown
de0cc7f99a
Merge branch 'master' of git://factorcode.org/git/factor
2008-11-07 20:49:42 -06:00
Slava Pestov
639da2d335
Refactor OS-specific parts of PowerPC backend
2008-11-07 20:45:25 -06:00
unknown
7365959f01
Starting work on Win64 port
2008-11-07 20:33:32 -06:00
sheeple
d1f248dac6
Fixing PowerPC backend: prolog register clobberage, spilling, and general stack frame usage. Add some lame tests for spilling
2008-11-06 19:00:56 -06:00
Slava Pestov
9366ad650d
Add unportable tag
2008-11-06 09:29:21 -06:00
sheeple
d2ec46e38f
PowerPC backend almost functional; some new compiler unit tests added,
...
better compilation of 'f eq?'; f becomes an immediate operand
move aux-offset to compiler.constants
2008-11-06 06:27:27 -06:00
Slava Pestov
7741096bff
Tweak PPC register usage; gcc doesn't like it when you mess with r31 for some reason
2008-11-06 03:36:46 -06:00
Slava Pestov
53cd75b06c
Add string-nth intrinsic
2008-11-06 01:11:28 -06:00
Slava Pestov
2239f4fb99
More work on PowerPC backend; change register usage, free up some more integer and float regs (untested)
2008-11-05 04:20:35 -06:00
Slava Pestov
dae41147fe
%bignum>integer now takes a temporary register since this is useful on both x86 and ppc
2008-11-05 04:16:08 -06:00
Slava Pestov
8b7c47a68b
Clean up x86 backend: move cpu.x86.architecture to cpu.x86, use branchless arithmetic in some intrinsics
2008-11-05 04:15:48 -06:00
Slava Pestov
10d3b4a55d
New PPC backend (untested)
2008-11-05 00:31:08 -06:00
Slava Pestov
d8345b5eda
Update PPC non-optimizing compiler backend: there are three new sub-primitives to support
2008-11-04 06:07:19 -06:00
Slava Pestov
75e9708488
Oops
2008-11-03 06:50:59 -06:00
Slava Pestov
e6f6cd5d93
Fix USING: -- you can now make ppc images, they just don't work yet
2008-11-03 06:40:14 -06:00
Slava Pestov
59f4f25b91
Loop alignment: appears to be a small win for reverse-complement
2008-11-03 06:20:51 -06:00
Slava Pestov
44a2499c17
fixnum-shift-fast and fixnum-mod subprimitives
2008-11-03 01:18:35 -06:00
Slava Pestov
dd20b39cd6
fixnum-shift-fast subprimitive
2008-11-03 00:03:39 -06:00
Slava Pestov
abb02f1784
Flesh out shift instructions
2008-11-03 00:03:00 -06:00
Slava Pestov
804c6f93ea
Fix x86.32
2008-10-31 21:07:41 -05:00
Slava Pestov
db4db19cd9
Start working on coalescing
2008-10-28 02:38:37 -07:00
Slava Pestov
69a0ad5e42
Ricing locals
2008-10-23 05:49:32 -05:00
Slava Pestov
84820244dd
Merge branch 'master' into new_codegen
2008-10-21 23:19:20 -05:00
Slava Pestov
52020c2fe3
Fixing x86 instruction encoding for addressing with base = ESP or R12
2008-10-21 23:18:27 -05:00
Slava Pestov
1b06ab1b39
Fixing various bugs
2008-10-21 23:17:32 -05:00
Slava Pestov
87e9fbb34c
Comparison operations
2008-10-21 03:21:29 -05:00
Slava Pestov
e92f795a76
More work on intrinsics; memory allocation and slot access now expands correctly
2008-10-20 20:40:15 -05:00
Slava Pestov
508b1f52b8
Update x86 backend for SSA codegen
2008-10-20 05:55:57 -05:00
Slava Pestov
37cf7d9a9c
Add SSA comparison instructions, fix various problems
2008-10-20 05:55:20 -05:00
Slava Pestov
f092622fac
CFG IR is now pure SSA
2008-10-20 01:56:28 -05:00
Slava Pestov
14d8696f40
Oops, don't mix register classes in active set
2008-10-19 03:34:42 -05:00
Slava Pestov
774ecf61e9
Implement spilling on x86
2008-10-19 01:10:45 -05:00
Slava Pestov
fe2c20882a
Fix alien accessor intrinsics; a bit more complex now that we don't reserve a tempreg
2008-10-13 22:43:32 -05:00
Slava Pestov
f2c6f8de5b
Using fry in cpu.x86, working on alien intrinsics
2008-10-13 16:43:58 -05:00
Slava Pestov
740b6ef3f2
Free up a register on x86.64
2008-10-13 14:03:21 -05:00
Slava Pestov
d8d3645d72
Fixing more codegen bugs
2008-10-13 12:49:20 -05:00
Slava Pestov
ae3c4ae1b6
Fix some problems with callbacks
2008-10-12 23:32:14 -05:00
Slava Pestov
2f4f86d288
Fix (set-slot) template
2008-10-12 17:36:34 -05:00
Slava Pestov
048d8daf09
Update intrinsics
2008-10-11 14:05:24 -05:00
Slava Pestov
3844cb62d8
Fix %write-barrier
2008-10-10 03:16:26 -05:00
Slava Pestov
c98651043c
Fix reversed polarity of FP comparisons
2008-10-10 02:33:47 -05:00
Slava Pestov
e5a55dafad
Fix bignum inline allocator
2008-10-09 17:03:30 -05:00
Slava Pestov
2438c78c6c
Merge branch 'master' into new_codegen
2008-10-09 14:18:24 -05:00
sheeple
bb6b998686
Fix alien-indirect on ppc
2008-10-09 14:04:33 -05:00
Slava Pestov
cf46a832e7
Debugging register allocator and inline allocation
2008-10-08 23:42:53 -05:00
Slava Pestov
0e4e05d5cd
Debugging new codegen
2008-10-08 03:51:44 -05:00
Slava Pestov
7b6d9c4c4f
Debugging new codegen
2008-10-07 20:00:38 -05:00
Slava Pestov
e6e313eba9
Backend updates
2008-10-07 16:42:11 -05:00
Slava Pestov
e69278b8fc
Merging in new codegen
2008-10-07 16:17:55 -05:00
Slava Pestov
3c2caf948a
16-align stack on x86-64
2008-10-06 00:33:47 -05:00
Slava Pestov
4ca06ae50f
Typo
2008-10-06 00:20:24 -05:00
Slava Pestov
33d775890c
More stack frame refactoring
2008-10-06 00:20:00 -05:00
Slava Pestov
a5fcb006fb
Clean up x86 stack frame code a bit more
2008-10-05 22:17:56 -05:00
Slava Pestov
d5112a0ced
Working on stack frame cleanup
2008-10-05 21:30:29 -05:00
Slava Pestov
c19f2257f4
Fix permission bits
2008-10-02 08:34:49 -05:00
Slava Pestov
2305117c21
Fix PPC bootstrap
2008-09-13 20:40:54 -05:00
Slava Pestov
722cacddb4
Fixing some problems with returning structs by value in x86.64 FFI
2008-09-13 20:28:13 -05:00
Slava Pestov
8b9784108e
Don't clobber RBX
2008-09-13 14:25:06 -05:00
Slava Pestov
6d050a61a7
Fix Joe Groff's x86-64 structs/callbacks bug
2008-09-12 04:02:32 -05:00
Slava Pestov
2f96db70b5
Merge branch 'master' of git://factorcode.org/git/factor
2008-09-11 01:21:49 -05:00
Doug Coleman
b544a3b1b7
ppc bootstrap
2008-09-11 01:15:31 -05:00
Slava Pestov
127896c201
More fixes
2008-09-11 00:48:23 -05:00
Slava Pestov
0c8e2584b4
Fixing unit tests for make, fry changes
2008-09-11 00:20:06 -05:00
Slava Pestov
cf80dd122a
Updating code for make and fry changes
2008-09-10 22:11:40 -05:00
Slava Pestov
44f53de164
Move make to its own vocabulary, remove fry _ feature
2008-09-10 20:07:00 -05:00
Slava Pestov
a3d1379b8c
Fix bug with large structs passed by value on x86.64
2008-09-09 03:10:43 -05:00
Slava Pestov
aea0fed14c
Fixing basis -> extra dependencies
2008-09-05 19:29:14 -05:00
Slava Pestov
fdf75fe110
Remove slots.deprecated, remove unused slots from slot-spec tuple; last vestiges of old accessors are now gone forever
2008-09-03 18:47:52 -05:00
Slava Pestov
d552ee1071
Tweak PPC intrinsics
2008-09-03 04:02:25 -05:00
Slava Pestov
a4a00f6e40
Adding missing optimizations to finalization pass
2008-09-02 22:59:49 -05:00
sheeple
1ef49b1a00
fix intrinsic
2008-09-02 17:02:15 -05:00
sheeple
6dcb6b9c95
Merge branch 'master' of git://factorcode.org/git/factor
2008-09-01 19:06:02 -05:00
sheeple
c8cecf8768
Fix stack effect declarations
2008-09-01 19:06:00 -05:00
Slava Pestov
4be346cd9c
Fixing PowerPC intrinsics
2008-09-01 18:34:16 -05:00
Slava Pestov
0c304b8fc6
Removing old accessor usages from core and basis
2008-08-31 07:45:33 -05:00
Slava Pestov
b73bc69084
Fix PPC again, oops
2008-08-31 05:50:02 -05:00
Slava Pestov
01e1092c8d
Fix PowerPC backend
2008-08-31 02:12:12 -05:00
Slava Pestov
6ead724b25
Fixing bugs
2008-08-29 04:23:39 -05:00
Slava Pestov
1fcbdf9d52
Fix more compiler bugs
2008-08-29 00:26:47 -05:00
Slava Pestov
86f11713e3
Fixing some more bugs
2008-08-22 03:12:15 -05:00
Slava Pestov
87cd0a5dab
Fix
2008-08-13 14:17:36 -05:00
Slava Pestov
a5ff214d67
More load fixes
2008-08-12 03:38:56 -05:00
Slava Pestov
48fa2e2d0e
Updating some code
2008-08-12 03:31:48 -05:00
Slava Pestov
6408b01e9d
Add 'unportable' tag in place of hard-coded list of 'dangerous' vocabs in load-everything
2008-07-29 16:47:52 -05:00
Slava Pestov
04df07ae7e
Fix PowerPC make-image
2008-07-29 00:07:31 -05:00