Slava Pestov
5c4bb80bc3
Update PowerPC %jump and %dispatch-label, and add PIC-related functions to cpu-ppc.hpp
2009-05-07 19:47:38 -05:00
Slava Pestov
4a2492c3fc
Merge branch 'master' of git://factorcode.org/git/factor
2009-05-07 19:41:54 -05:00
Slava Pestov
25886ff453
cpu.ppc.bootstrap: updates
2009-05-07 19:40:25 -05:00
Slava Pestov
63b963e12a
Fix x86-64 backend
2009-05-07 16:58:18 -05:00
Slava Pestov
3591f6c684
Count megamorphic cache hits
2009-05-07 14:26:08 -05:00
Slava Pestov
318552ba60
Fix tail call PICs on x86-64
2009-05-06 22:44:30 -05:00
Slava Pestov
4915e1ced7
Clean up bootstrap.image, and implement new calling convention for tail calls; tail call sites now have PICs
2009-05-06 22:04:01 -05:00
Slava Pestov
12a34d81f7
JIT now supports multiple relocations per code template. This simplifies non-optimizing compiler backends
2009-05-06 20:04:49 -05:00
Slava Pestov
581d017b46
Working on inline caching for tail call sites
2009-05-06 19:22:22 -05:00
Slava Pestov
c93d876075
Better separation of concerns: cpu.{x86,ppc}.assembler no longer depends on compiler.codegen.fixup and cpu.architecture. Rename rt-xt-direct to rt-xt-pic to better explain its purpose
2009-05-06 16:14:53 -05:00
Slava Pestov
075fb1d3a6
Merge branch 'master' of git://factorcode.org/git/factor
2009-05-06 15:34:48 -05:00
Slava Pestov
49409b4d8c
Working on PowerPC backend
2009-05-06 15:39:03 -05:00
Slava Pestov
bf887cf028
cpu.ppc.bootstrap: working on polymorphic inline caching for PowerPC
2009-05-06 15:30:52 -05:00
Slava Pestov
867ff51b83
Remove some unused constants and update an obsolete comment
2009-05-06 14:57:17 -05:00
Slava Pestov
50826084f0
cpu.x86.bootstrap: remove obsolete comment
2009-05-05 20:56:44 -05:00
Slava Pestov
33d5bce670
cpu.ppc.assembler: update for code_format=1
2009-05-05 20:56:36 -05:00
Slava Pestov
e9e095f240
Rename enable/disable-compiler to enable/disable-optimizer, and add with-optimizer and without-optimizer combinators
2009-05-01 05:52:05 -05:00
Slava Pestov
742d574162
Non-optimizing compiler doesn't need to optimize 'dispatch' primitive anymore since its rarely used
2009-04-30 19:42:08 -05:00
Slava Pestov
f9ec0a07c5
Fix PICs for x86-64
2009-04-30 18:00:49 -05:00
Slava Pestov
5c9dc6d753
Tag-only PIC checks would always miss
2009-04-30 06:41:37 -05:00
Slava Pestov
4ae6269185
PPC make-image fix
2009-04-30 05:59:59 -05:00
Slava Pestov
5fb5c19d61
Machine code is now stored in a byte array instead of an array for add_code_block()
2009-04-30 04:34:35 -05:00
Slava Pestov
59d6131c7c
Bum 3 instructions out of megamorphic fast path by switching to fixed-size caches
2009-04-30 04:14:14 -05:00
Slava Pestov
8c01b79d06
Fix PPC make-image
2009-04-30 04:00:44 -05:00
Slava Pestov
515c619202
Non-optimizing compiler now open-codes megamorphic dispatch fast path
2009-04-30 03:37:07 -05:00
Slava Pestov
62db617927
Get rid of two instructions from tag pics and one instruction from all others
2009-04-29 22:24:28 -05:00
Slava Pestov
5188f4e1f0
Fix TEST opcode in cpu.x86.assembler
2009-04-29 22:23:42 -05:00
Slava Pestov
bd186b6320
Eliminate 3 instructions from PIC fast path
2009-04-29 21:32:05 -05:00
Slava Pestov
38a38a57a9
Fix hi-tag-or-tuple PICs
2009-04-29 03:00:09 -05:00
Slava Pestov
9243316489
Debugging inline caching
2009-04-28 23:05:18 -05:00
Slava Pestov
c15a4c1c5a
Add new relocation type for call sites which may be replaced by ICs
2009-04-28 17:53:14 -05:00
Slava Pestov
4d10105802
Working on inline caching
2009-04-28 03:48:37 -05:00
Slava Pestov
7e84daf0f1
Move (execute) to kernel.private
2009-04-26 02:42:37 -05:00
Slava Pestov
76281235e7
bootstrap.image: clean up jit-define and define-sub-primitive so that
2009-04-25 22:35:19 -05:00
Slava Pestov
27c84e89fe
Working on faster (execute)
2009-04-25 21:14:59 -05:00
Slava Pestov
3353a777f7
Fixing some unit test failures
2009-04-22 07:05:00 -05:00
Slava Pestov
0f0218b209
Fix some compile warnings in bootstrap
2009-04-17 17:53:26 -05:00
sheeple
42d164db77
Fix C99 complex number support in FFI on Mac OS X/PPC
2009-03-30 07:19:14 -05:00
Slava Pestov
75452c842f
cpu.ppc.bootstrap: update for syntax change
2009-03-22 21:37:42 -05:00
Slava Pestov
ea60f8ae93
Changing : foo ; parsing to SYNTAX: foo ;
2009-03-21 01:27:50 -05:00
Slava Pestov
7f4c967ace
More compact relocation layout
2009-03-19 20:02:43 -05:00
Slava Pestov
bf41b187b0
Re-organize code so that with-compilation-unit can infer
...
Fix with-compilation-unit to work in deployed code
2009-03-13 19:39:32 -05:00
Doug Coleman
990513db60
use CONSTANT: in basis
2009-02-22 19:13:08 -06:00
Slava Pestov
6b25e99470
Add summary for heaps more vocabs
2009-02-16 21:05:13 -06:00
Slava Pestov
6b99b04531
Add vocab: for vocab-relative paths
2009-02-15 19:53:21 -06:00
sheeple
3c1ddde1f9
Fix complex float support on NetBSD
2009-02-12 08:10:21 -06:00
sheeple
facd455e92
Working on complex float support in FFI on NetBSD
2009-02-12 06:25:07 -06:00
Slava Pestov
44bfff7c7b
Rename ##load-indirect to ##load-reference since this is more descriptive; value numbering doesn't assign expressions to ##load-reference nodes since this would end up folding literals which were eq? but not =
2009-01-29 01:44:58 -06:00
Slava Pestov
f34c14a0f5
Remove some usages of tuck
2009-01-23 18:20:47 -06:00
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