56 Commits

Author SHA1 Message Date
Joel Dice
8e5ce11047 refactor memory management code
We now support immortal objects, which the GC will scan for references
but not consider for collection.  On x86_64, we allocate JIT code memory
via mmap, which lets us map memory into the bottom 2GB of the address
space, ensuring that 32-bit relative jumps and calls work.
2008-01-09 18:20:36 -07:00
Joel Dice
1a79fc45df change jump offset asserts to expects 2008-01-08 17:30:55 -07:00
Joel Dice
96ddae1742 assert that jump offsets fit into 32-bit words 2008-01-08 17:23:10 -07:00
Joel Dice
ef06be3904 fix bad machine code generated for mov2 2008-01-07 18:33:49 -07:00
Joel Dice
74a7da3010 implement and8, or8, and xor8 for 32-bit systems 2008-01-07 16:30:45 -07:00
Joel Dice
89b60bfba0 fix incorrect encoding of neg instruction 2008-01-03 19:16:29 -07:00
Joel Dice
c119d4362e fix swapped machine codes for sar/shr instructions 2008-01-03 17:29:33 -07:00
Joel Dice
651a27f73e sign-extend array indexes from 32 to 64 bits on amd64; provide useful messages for certain runtime exceptions 2008-01-03 11:37:00 -07:00
Joel Dice
f151d85f4e intercept SIGSEGV and throw NullPointerExceptions 2007-12-31 15:40:56 -07:00
Joel Dice
069a760918 snapshot 2007-12-30 15:24:48 -07:00
Joel Dice
8d140c162d eliminate unecessary register and memory operand construction 2007-12-28 08:42:30 -07:00
Joel Dice
96f3749c01 implement 64-bit shift instructions for 32-bit arch; code cleanups 2007-12-27 15:55:59 -07:00
Joel Dice
8e7f3b6821 add force_align_arg_pointer attribute to divideLong and moduloLong functions for OSX 2007-12-27 08:28:25 -07:00
Joel Dice
848a67b397 implement jsr, jsr_w, and ret; various bugfixes to get SWT example working in JIT mode 2007-12-26 16:59:55 -07:00
Joel Dice
fdd57ad326 do a 32-bit comparison for cmp4 instruction on amd64 2007-12-26 12:18:51 -07:00
Joel Dice
6ed28a13c3 fix x86-32 regressions due to JIT refactoring 2007-12-26 10:16:21 -07:00
Joel Dice
b361e1b637 refactor JIT code to make operand size an explicit part of each applicable instruction 2007-12-26 09:56:14 -07:00
Joel Dice
8cd18d6193 more JIT bugfixes 2007-12-23 13:06:24 -07:00
Joel Dice
f87a78833b fix JIT regressions on amd64 2007-12-23 12:18:34 -07:00
Joel Dice
15857135c0 more JIT fixes; all tests now pass on x86-32 2007-12-23 11:48:22 -07:00
Joel Dice
31cf1754ce fix frame trace bug leading to incomplete stack coverage during GC; fix thinko pushing arguments in vmInvoke 2007-12-23 11:01:41 -07:00
Joel Dice
6c532e2ba4 fix register allocation bugs in floating point instructions 2007-12-22 17:15:46 -07:00
Joel Dice
f116225933 fix 64-bit arithmetic support on x86-32 2007-12-22 17:00:35 -07:00
Joel Dice
0dfdcd87d9 Merge jdpc:p/vm/ 2007-12-21 17:32:21 -07:00
Joel Dice
a867e4d587 snapshot 2007-12-21 17:26:55 -07:00
Joel Dice
e58972a968 fix regression in push instruction on amd64 2007-12-20 16:47:01 -07:00
Joel Dice
06109792e5 JIT build fixes 2007-12-20 16:19:48 -07:00
Joel Dice
640d1d0654 sketch some 64-bit-arithmetic-on-32-bit-system instructions 2007-12-20 09:02:00 -07:00
Joel Dice
be42c325d8 32-bit JIT bugfixes; still broken 2007-12-19 18:42:12 -07:00
Joel Dice
7dd81c803a fix native call argument marshalling regression 2007-12-19 17:02:32 -07:00
Joel Dice
9b08fe083c snapshot 2007-12-18 18:28:55 -07:00
Joel Dice
3bafbf08bb implement shr and ushr; teach add and sub about 32 bit immediate operands 2007-12-17 19:10:12 -07:00
Joel Dice
b2cb8e0a69 JIT bugfixes; implement or and xor 2007-12-17 17:22:37 -07:00
Joel Dice
5c807a4ddc implement shl; fix thinko in Frame::Protector; fix uninitialized value warnings 2007-12-17 15:38:59 -07:00
Joel Dice
4c3a2575ba lots of JIT bugfixes; all top-level tests now pass 2007-12-17 13:55:31 -07:00
Joel Dice
25ea07aed5 snapshot - JIT broken 2007-12-16 18:46:46 -07:00
Joel Dice
56a8ce8fb1 more JIT bugfixes; implement mul instruction 2007-12-16 16:52:38 -07:00
Joel Dice
fb29fd11d8 more JIT bugfixes 2007-12-16 14:30:19 -07:00
Joel Dice
796a64a426 lots of JIT bugfixes and cleanups 2007-12-15 17:24:15 -07:00
Joel Dice
403a6b0200 lots of JIT bugfixes 2007-12-14 18:11:01 -07:00
Joel Dice
12e10b57f5 JIT bugfixes and new instructions; exception propagation and stack traces are functional but not yet entirely correct 2007-12-14 11:27:56 -07:00
Joel Dice
b3918a0d7d support encoding instructions with indexed and scaled memory offsets 2007-12-13 18:59:56 -07:00
Joel Dice
ec8fc80ebe refactor compile.cpp to delay code generation until after all byte code has been visited; bugfixes 2007-12-13 17:27:09 -07:00
Joel Dice
c4347bd7d3 more JIT bugfixes and new instructions 2007-12-12 17:18:31 -07:00
Joel Dice
b2147c2c99 lots of JIT bugfixes and a few new instructions 2007-12-12 15:19:13 -07:00
Joel Dice
fe24005ff0 remove virtual stack code due to problems with jumps, to be revisited along with other optimizations when everything is working; various bugfixes 2007-12-12 11:59:45 -07:00
Joel Dice
fab77e4d96 don't call prologue and epilogue from compileDefault, since we want the original rbp and rsp values 2007-12-11 18:19:03 -07:00
Joel Dice
33b2a4a1e8 support absolute operands on virtual stack and absolute to memory movs 2007-12-11 17:27:04 -07:00
Joel Dice
740e86a084 remove unused function; call logicalFlush in pop functions 2007-12-11 17:08:55 -07:00
Joel Dice
d70e3aaefb JIT progress: new, invokespecial, etc. 2007-12-11 16:52:28 -07:00