Joel Dice
717f359666
implement "callee pops arguments" calling convention and refactor tail call code accordingly
2009-04-19 16:36:11 -06:00
Joel Dice
dba72409aa
move use of SingleRead::successor; fix build errors
...
We now use SingleRead::successor in pickTarget, where we use it to
determine the prefered target site for the successor without requiring
the target to conform to that preference. The previous code made the
preference a hard requirement, which is not desirable or even possible
in general.
2009-04-07 18:55:43 -06:00
Joel Dice
35d1c6e068
add SingleRead::successor; fix build errors
...
The SingleRead::successor field is used (when non-null) to further
constrain the SiteMask in SingleRead::intersect based on reads of
successor values (as in the cases of moves and condensed-addressing
combine and translate instructions).
2009-04-06 18:34:12 -06:00
Joel Dice
5e740170f2
initial sketch of tail call optimization (non-virtual calls only, so far)
2009-03-31 14:15:08 -06:00
Joel Dice
d1018bf078
update copyright years
2009-03-15 12:02:36 -06:00
Joel Dice
073b829c79
avoid running out of eligable source registers for writing a single byte to memory on x86
2009-03-14 16:47:26 -06:00
Joel Dice
49cd2dd9bf
fix powerpc bootimage build (second try)
2009-03-10 19:08:16 -06:00
Joel Dice
6c271ac994
fix powerpc bootimage build
2009-03-09 18:52:09 -06:00
Joel Dice
2ca8132d97
implement support for volatile fields
2009-03-02 20:18:15 -07:00
Joel Dice
5f0b40e531
restore call to Client::releaseTemporary in moveCM
2009-03-01 23:07:28 +00:00
Joel Dice
7a2bf9b855
fix x86.cpp build
2009-03-01 15:14:51 -07:00
Joel Dice
696282631a
fix endianness issues with 64-bit locals
2009-03-01 12:28:17 -07:00
Joel Dice
3e6c30a4b5
always return an 8-byte value (or void) from native functions called from Java
...
This is important on the 32-bit OS X PowerPC ABI, since the location
of the low 32-bits of a return value change depending on whether the
entire value is 64-bits or not.
2009-02-28 14:20:43 -07:00
Joel Dice
c5dd97ffea
ensure that we release temporaries back to the compiler in powerpc.cpp; allow the first operand of a comparison to be a constant
2009-02-28 13:41:37 -07:00
Joel Dice
d7d3dd5055
various bugfixes, especially concerning frame allocation and offset calculation
2009-02-25 20:49:42 -07:00
Joel Dice
09c96a3063
simplify longCompare in x86.cpp such that the move function pointer parameter is eliminated and moveCR is called directly
2009-02-25 18:13:18 -07:00
Joel Dice
324caaf98b
add size parameter to Assembler::returnLow since the register used depends on the return value size on PowerPC
2009-02-17 18:19:31 -07:00
Joel Dice
7803663fc9
fix block delimiting code in compiler.cpp to minimize the number of blocks needed
...
This exposed bugs in x86.cpp concerning alignment padding which are now
fixed.
2009-02-14 17:52:44 -07:00
Joel Dice
e3257134c9
fix merge-related regression affecting bootimage build
2009-02-09 19:00:53 -07:00
Joel Dice
9b0d6854ec
fix merge conflicts
2009-02-09 16:22:51 -07:00
Joel Dice
a1ec71423e
Merge branch 'master' into powerpc
...
Conflicts:
makefile
src/assembler.h
src/binaryToMacho.cpp
src/compile.cpp
src/compiler.cpp
src/x86.cpp
2009-02-09 16:22:01 -07:00
Joel Dice
8b1801c465
various bugfixes involving multiword values
2009-02-01 16:10:56 -07:00
Joel Dice
8dca14af74
remove obsolete assertion from negateRR
2009-01-29 18:43:18 -07:00
Joel Dice
1c3504b62a
fix various stack bugs
2009-01-29 18:36:19 -07:00
Joel Dice
d76b4121ae
fix 64-bit constant case in addCR and subtractCR
2009-01-04 12:32:11 -07:00
Joel Dice
055ec4dd9f
various fixes and cleanups concerning 64-bit values on 32-bit systems
2008-12-21 14:41:56 -07:00
Joel Dice
8b2a6f85fc
remove divideCR and remainderCR
...
This forces the compiler to explicitly move the constant operand into
a register, avoiding the possibility that AX or DX might be unavailable
when the assembler needs them.
2008-12-11 18:08:16 -07:00
Joel Dice
851efc8d10
handle case of unresolved promise in compareCR and compareCM
2008-12-02 19:39:09 -07:00
Joel Dice
25ade1484a
lots of bugfixes and refactoring
2008-12-01 19:38:00 -07:00
Joel Dice
0ec5ad3701
update makefile to optionally build and use a boot image; various bugfixes
2008-11-29 16:08:14 -07:00
Joel Dice
02afbd1fa1
handle unresolved constants in moveCM
2008-11-27 21:58:32 -07:00
Joel Dice
f698c24ea6
delay resolving method call offsets until all methods have been compiled when creating a boot image
2008-11-27 13:59:40 -07:00
Joel Dice
f9145528c8
do constant-to-memory movq in one instruction on amd64 when possible
2008-11-25 19:22:21 -07:00
Joel Dice
20cf42c5e4
more work on boot image creation
2008-11-23 16:58:01 -07:00
Joel Dice
fb770d10fb
implement jsr/ret support
...
The Subroutine test won't pass due to a bug in the stack mapping code
such that objects may be missed during GC.
2008-11-13 17:59:21 -07:00
Joel Dice
fae0ccfe96
fix unused parameter warnings
2008-11-11 18:09:45 -07:00
Joel Dice
e859502811
handle unresolved constants in moveCM
2008-11-11 11:56:43 -07:00
Joel Dice
c80eb51c17
Merge branch 'master' into powerpc
...
Conflicts:
makefile
src/assembler.h
src/compile.cpp
src/compiler.cpp
src/compiler.h
src/finder.cpp
2008-11-11 08:21:48 -07:00
Joel Dice
54cda3ca61
specify register contraints for Negate instruction in MyArchitecture::plan
2008-11-10 20:23:33 -07:00
Joel Dice
81d532c4f0
handle overlap cases in moveRR
2008-11-10 19:11:32 -07:00
Joel Dice
5fc9ad058b
more bugfixes; all tests pass on amd64
2008-11-10 17:07:44 -07:00
Joel Dice
00d8142de9
various bugfixes; all but one test are passing on amd64
2008-11-09 16:56:37 -07:00
Joel Dice
decd24965a
implement multiplyCR and divideCR
2008-11-08 15:42:26 -07:00
Joel Dice
61539bae31
fix stack mapping bugs which broke GC
2008-11-08 15:36:38 -07:00
Joel Dice
312539af64
fix moves involving sign or zero extension
2008-11-08 13:47:26 -07:00
Joel Dice
f01f4441d9
various bugfixes and instructions implemented to get more tests passing
2008-11-06 17:39:38 -07:00
Joel Dice
6f1d02dae7
remove the libstdc++ dependency once and for all
...
The trick is to make all destructors non-virtual. This is safe because
we never use the delete operator, which is the only case where virtual
destructors are relevant. This is a better solution than implementing
our own delete operator, because we want libraries loaded at runtime to
use the libstdc++ version, not ours.
2008-10-28 15:40:50 -06:00
Joel Dice
7d6ca28b2f
snapshot
2008-10-18 18:15:57 -06:00
Joel Dice
5391c68efd
bugfixes
2008-10-14 18:45:31 -06:00
Joel Dice
f6c4496166
various bugfixes
2008-10-05 18:50:59 -06:00
Joel Dice
d54ee9081b
return null for null argument to MyArchitecture::frameIp
2008-10-04 18:12:29 -06:00
Joel Dice
83aa342bc8
hello, world on amd64
2008-10-04 11:26:35 -06:00
Joel Dice
965b83303f
implement additional instructions
2008-09-27 16:00:58 -06:00
Joel Dice
f2bf152eba
more bugfixes
2008-09-23 18:01:42 -06:00
Joel Dice
d4938115ef
various bugfixes
2008-09-23 15:18:41 -06:00
Joel Dice
fadb66044b
remove unused instructions from x86.cpp
2008-09-16 07:59:34 -06:00
Joel Dice
606e5cb238
lots of bugfixes - finally got Simple.pow() working
2008-09-14 20:28:42 -06:00
Joel Dice
44ccd2b09e
write alignment padding to output buffer in MyAssembler::writeTo
2008-09-13 15:07:39 -06:00
Joel Dice
392a1417e5
lots of bugfixes and a few instructions added
2008-09-08 18:31:19 -06:00
Joel Dice
1dd25325c8
implement various instructions, including AlignedCall
2008-09-07 20:21:52 -06:00
Joel Dice
af9758a6d3
got a simple arithmetic test working
2008-09-07 14:12:11 -06:00
Joel Dice
9971eaa92a
support out-of-order compilation in x86 assembler
2008-09-06 19:37:12 -06:00
Joel Dice
ed806ca740
working towards compiling simple methods
2008-09-06 15:25:41 -06:00
Joel Dice
e13b755048
more progress towards new JIT code - this compiles but won't run properly
2008-09-05 09:00:38 -06:00
Joel Dice
5f7d68b404
snapshot
2008-08-30 14:12:27 -06:00
Joel Dice
a062d8c975
progress towards refactored JIT compiler to support PowerPC and data flow analysis across control flow boundaries
2008-08-23 12:04:36 -06:00
Joel Dice
9908bbcf50
sketch new version of x86.cpp to conform to new assembler.h APIs
2008-08-19 17:38:37 -06:00
Joel Dice
4a022147cd
Merge branch 'master' of oss.readytalk.com:/var/local/git/avian into powerpc
2008-08-16 12:56:41 -06:00
Joel Dice
6ee2b0280e
implement compareAM
2008-07-31 07:53:43 -06:00
Joel Dice
2343483d8e
Merge branch 'master' of oss:/var/local/git/avian into powerpc
2008-07-13 12:47:49 -06:00
Joel Dice
23043d140f
snapshot
2008-07-05 14:21:13 -06:00
Joel Dice
107ac01304
fix addCR and subtractCR for cases of 64-bit constants on amd64
2008-07-02 08:52:35 -06:00
Joel Dice
9bea21dec7
add copyright header to files which don't already have them
2008-06-25 14:53:48 -06:00
Joel Dice
3d84f31c13
fix longCompareCR on 64-bit systems
2008-06-17 09:32:46 -06:00
Joel Dice
b683d836c3
implement longCompareRR
2008-06-12 11:23:20 -06:00
Joel Dice
6f5cc9f45f
fix unused parameter warning
2008-06-12 11:09:53 -06:00
Joel Dice
eabb37e6eb
add lcmp instruction to Compiler and corresponding LongCompare instruction to Assembler, since that's the only efficient way to implement the lcmp bytecode on x86
2008-06-12 10:56:48 -06:00
Joel Dice
357acbdb0f
implement move4To8CR, which just defers to moveCR
2008-06-11 08:59:05 -06:00
Joel Dice
5b2065e76c
only elide constant multiply if constant is one, not zero (duh)
2008-06-10 18:14:15 -06:00
Joel Dice
3b0e05b739
fix unused parameter warning
2008-06-02 08:13:20 -06:00
Joel Dice
ecfb853f17
use relative branches where possible on amd64
2008-06-02 07:49:09 -06:00
Joel Dice
65830a76c5
improve efficiency of array bounds checks and generate a thunk table for native functions called indirectly
2008-05-31 16:14:27 -06:00
Joel Dice
51256f3cc2
fix moveCM for 64-bit constants on 64-bit machines
2008-05-22 18:16:44 -06:00
Joel Dice
3326aafdac
various 32-bit fixes
2008-05-22 11:15:18 -06:00
Joel Dice
651c4559db
implement compareAR
2008-05-19 10:39:05 -06:00
Joel Dice
ad6153612b
disallow memory,constant comparisons on x86
2008-05-19 07:43:37 -06:00
Joel Dice
b52cefa86e
disallow memory operands in 32-bit comparisons on amd64
2008-05-19 07:27:05 -06:00
Joel Dice
56d8851764
constrain temporary register in moveMM according to moveMR's requirements
2008-05-18 22:28:47 -06:00
Joel Dice
4858972dbc
support 64-bit subtracts on 32-bit systems; allow constant shift counts in MyAssembler::plan
2008-05-18 09:43:31 -06:00
Joel Dice
392132cb0e
Merge branch 'compiler' of la.merseine.nu:p/avian-compiler into compiler
2008-05-17 21:34:46 -06:00
Joel Dice
b6b84af123
various bugfixes
2008-05-17 21:32:14 -06:00
Joel Dice
15c2eb13f2
don't generate code for a move from a register to itself
2008-05-17 18:13:27 -06:00
Joel Dice
790e2fee42
respect constraints specified by Assembler::plan in MoveEvent::compile
2008-05-16 10:01:24 -06:00
Joel Dice
d7fc4aa438
fix offset computation in compareCR and compareCM
2008-05-15 18:34:48 -06:00
Joel Dice
bbd1ee5540
various register marshalling bugfixes
2008-05-15 14:00:57 -06:00
Joel Dice
8434abaa0e
implement swapRR
2008-05-14 17:33:55 -06:00
Joel Dice
73b8cc5595
fix unused variable warnings
2008-05-14 17:19:41 -06:00
Joel Dice
13d6ab023f
implement addCM
2008-05-13 11:28:19 -06:00
Joel Dice
f1809897bd
fix build
2008-05-06 15:13:02 -06:00
Joel Dice
2e108861da
remove operand marshalling from the assembler in favor of doing it in the compiler
2008-05-04 13:09:12 -06:00