Joel Dice
f0d556b0ec
fix handling of call target resolution for non-virtual calls
2008-01-11 15:16:24 -07:00
Joel Dice
570925ad0e
handle locking for synchronized native methods
2008-01-11 10:49:11 -07:00
Joel Dice
13aaa14a41
use code allocator to allocate indirect caller
2008-01-09 18:51:58 -07:00
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
811fbf0ab9
don't try to compile a method twice if it was compiled as a side-effect of initializing a class
2008-01-08 14:23:49 -07:00
Joel Dice
cfc959a3d2
invoke static initializers more lazily
2008-01-08 12:36:34 -07:00
Joel Dice
551addc638
make array bounds checking optional; add comments describing stack mapping algorithm
2008-01-08 10:10:24 -07:00
Joel Dice
c8472c4d30
minimize state tracked by stack mapping algorithm
2008-01-08 08:24:57 -07:00
Joel Dice
8dc674b3d2
remove redundant line in multianewarray
2008-01-07 16:09:55 -07:00
Joel Dice
72f7115323
add FORCE_ALIGN attribute to non-trivial functions called from Java land
2008-01-07 15:49:34 -07:00
Joel Dice
2cda000725
fix code ordering bug in compile() which caused us to calculate the stack map incorrectly; logging tweak
2008-01-07 15:04:53 -07:00
Joel Dice
259dd643e0
fix over-agressive state reset in state mapping code; logging tweaks
2008-01-07 14:32:41 -07:00
Joel Dice
25f12ca40a
set Verbose=false
2008-01-07 10:16:41 -07:00
Joel Dice
888dce8f3c
bugfixes and cleanups for new stack mapping code
2008-01-07 09:01:35 -07:00
Joel Dice
a755368add
sketch of new stack mapping algorithm
2008-01-07 07:51:07 -07:00
Joel Dice
e30302722e
Merge branch 'master' of dice.ecovate.com:git/vm
...
Conflicts:
src/compile.cpp
2008-01-03 16:54:35 -07:00
Joel Dice
4bda925e08
fix thinko in Frame::mapSizeInWords; code cleanup
2008-01-03 16:53:37 -07:00
Joel Dice
ce2f5dd375
fix use of clobbered stack register in multianewarray
2008-01-03 14:28:29 -07:00
Joel Dice
2d6d69a573
fix thinko in invokeNative2
2008-01-03 12:49:07 -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
1d7931a654
fix GC safety bugs in compile.cpp
2008-01-01 18:07:12 -07:00
Joel Dice
bdd62011eb
fix up access violation handling on windows; refactor posix segv handling to match API change needed for windows
2008-01-01 10:08:47 -07:00
Joel Dice
100fc304ad
sketch of windows access violation handling; posix segv handling bugfixes
2007-12-31 16:21:57 -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
c147ef4e5c
allow concurrent reads and writes on trace node hashtable, requiring only writes to acquire the the class lock
2007-12-28 09:50:26 -07:00
Joel Dice
5d65e7c220
handle synchronized methods properly in JIT mode
2007-12-27 17:02:05 -07:00
Joel Dice
bc44f468de
set Verbose=false in compile.cpp
2007-12-27 13:33:58 -07:00
Joel Dice
00c095b564
pop address off stack in jsr instruction before compiling the code which follows
2007-12-27 13:32:34 -07:00
Joel Dice
ea2935f5f1
use storeObjectOrAddress in all astore* instructions
2007-12-27 09:02:03 -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
c0cf15bb37
add missing instructions and fix shift long instructions to pop an int instead of a long as the shift count
2007-12-26 12:19:45 -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
271797bead
GC safety fix in resolveTarget
2007-12-23 12:26:35 -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
a020a3f6bb
handle various return types properly in invokeNative2
2007-12-23 11:09:41 -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
a867e4d587
snapshot
2007-12-21 17:26:55 -07:00
Joel Dice
06109792e5
JIT build fixes
2007-12-20 16:19:48 -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
6895ffaa99
GC safety and sign extension fixes
2007-12-17 19:09:32 -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
e4fbadd051
JIT-related GC safety fixes
2007-12-16 15:41:07 -07:00
Joel Dice
fb29fd11d8
more JIT bugfixes
2007-12-16 14:30:19 -07:00
Joel Dice
86218ebcb8
fix stack pointer calculation in unwind code and set rbx to thread pointer when unwinding
2007-12-15 18:00:25 -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
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
d70e3aaefb
JIT progress: new, invokespecial, etc.
2007-12-11 16:52:28 -07:00
Joel Dice
fdeafe46fd
2+2 test now works with new JIT code
2007-12-11 14:26:59 -07:00
Joel Dice
286f290665
more JIT progress
2007-12-10 17:48:09 -07:00
Joel Dice
f8cda0cd85
more JIT compiler progress
2007-12-09 15:45:43 -07:00
Joel Dice
d105a180db
remove unecessary namespace qualifier
2007-11-18 12:17:14 -07:00
Joel Dice
7f1837fecd
move fixed object (mark and sweep) support into heap.cpp and refine algorithms for determining when and how much to GC
2007-10-28 13:14:53 -06:00
Joel Dice
60072b9fdc
implement fixed object support
2007-10-27 19:54:30 -06:00
Joel Dice
20cc788fa4
support classloading from jar files compiled into the executable
2007-10-25 16:06:05 -06:00
Joel Dice
3e84d4438a
revise signatures of mark() and set() to take a target object and offset instead of a target object reference, paving the way for immovable objects
2007-10-22 11:22:30 -06:00
Joel Dice
f4dfc889fd
rough sketch of lookupswitch and tableswitch instructions
2007-10-22 08:14:05 -06:00
Joel Dice
64acabf130
fix thinko in getstatic
2007-10-17 20:50:43 -06:00
Joel Dice
02c1939de5
fix implicit conversion warnings
2007-10-17 20:03:01 -06:00
Joel Dice
569c81019c
mask out least significant bits during class dereference in generated code
2007-10-17 19:25:30 -06:00
Joel Dice
1aee58e390
fix tracking stack frames in compile.cpp
2007-10-17 18:41:49 -06:00
Joel Dice
e393f49fd6
fix Compiler.compileCaller() to work on both i386 and amd64
2007-10-17 11:22:09 -06:00
Joel Dice
5fb1495f4d
bugfixes and new instructions in compile.cpp
2007-10-16 19:21:35 -06:00
Joel Dice
200e933923
fix regression related to logging verbosity and exception handling in compile.cpp
2007-10-16 12:16:12 -06:00
Joel Dice
fc898c4df1
fix broken assumption that all native functions will push rbp on the stack first thing
2007-10-16 12:10:56 -06:00
Joel Dice
96ed27c55c
various bugfixes to get Tree.java to work
2007-10-16 11:21:26 -06:00
Joel Dice
5f6258045e
implement various floating point instructions; fix Floats.java to actually test something
2007-10-15 13:12:38 -06:00
Joel Dice
659555b6ce
fix use of uninitialized values at root thread creation time when running in stress mode; allocate Thread::defaultHeap on the heap instead of as part of the Thread structure
2007-10-13 19:18:25 -06:00
Joel Dice
5c99edd90e
fix many JIT GC bugs; GC.java now passes
2007-10-13 15:48:40 -06:00
Joel Dice
b8ce22dc42
JIT GC bugfixes
2007-10-12 16:06:33 -06:00
Joel Dice
349fe47c8d
JIT GC progress; fix interface method lookup bug
2007-10-12 11:56:43 -06:00
Joel Dice
5a92852f74
stack mapping progress
2007-10-12 08:26:36 -06:00
Joel Dice
3e1dbab0f0
move bitmap helper functions to common.h; preserve callee-saved registers in vmInvoke()
2007-10-11 20:52:16 -06:00
Joel Dice
201a658941
stack mapping bugfixes
2007-10-11 18:30:46 -06:00
Joel Dice
d5a8193614
lots of work on stack mapping, plus a couple of bugfixes
2007-10-11 16:43:03 -06:00
Joel Dice
69389ea8be
more progress towards stack mapping
2007-10-10 16:39:40 -06:00
Joel Dice
808b4780b1
progress towards stack mapping
2007-10-10 15:34:04 -06:00
Joel Dice
1406d6bc24
refactor parts of compile.cpp to improve time efficiency of java IP -> machine IP translation and to prepare for stack object reference tracking
2007-10-10 11:26:28 -06:00
Joel Dice
915ade9ccc
various JIT bugfixes
2007-10-09 13:30:01 -06:00
Joel Dice
defa8c62ac
64-bit arithmetic bugfixes
2007-10-09 11:15:40 -06:00
Joel Dice
7e0731ebdd
various bugfixes involving longs
2007-10-08 17:13:55 -06:00
Joel Dice
c7d7c4ca0a
implement additional instructions for JIT; fix bug in dispose(Thread*,Reference*)
2007-10-08 15:41:41 -06:00
Joel Dice
feeaecbfd8
more work on JIT unwinding
2007-10-04 16:41:19 -06:00
Joel Dice
2135f62584
progress towards JIT stack unwinding
2007-10-03 21:19:39 -06:00
Joel Dice
404d996c1e
snapshot
2007-10-03 18:41:54 -06:00
Joel Dice
ba03aa88df
snapshot
2007-10-02 19:54:21 -06:00
Joel Dice
f7058f8fd6
snapshot
2007-10-02 18:22:48 -06:00
Joel Dice
68e382ca8d
snapshot
2007-10-01 18:08:17 -06:00
Joel Dice
45dc118ab9
invoke native methods using a common routine, instead of compiling code specific to each method
2007-10-01 09:19:15 -06:00
Joel Dice
7ecb5b9c30
fixes for various recent regressions
2007-09-30 10:32:17 -06:00
Joel Dice
7caedba26f
hello, world!
2007-09-30 09:52:21 -06:00
Joel Dice
ea47976aad
implement array load instructions
2007-09-29 22:07:22 -06:00
Joel Dice
a73f474f34
implement Processor::makeLocalReference()/disposeLocalReference()
2007-09-29 21:33:38 -06:00
Joel Dice
8ae36c05b7
lots of new instructions and bugfixes
2007-09-29 20:48:27 -06:00
Joel Dice
b0500a881c
implement checkcast and instanceof
2007-09-29 15:08:29 -06:00
Joel Dice
569cfa9e07
implement more instructions; various bugfixes
2007-09-29 14:24:14 -06:00
Joel Dice
f2ec75e202
handle 32-bit immediate values in Assembler.push()
2007-09-29 12:34:56 -06:00
Joel Dice
79603e284d
sketch of Compiler.compileNative() and ifnull instruction implementation
2007-09-28 17:41:03 -06:00
Joel Dice
ddab82996c
implement invokestatic, putstatic, and bipush; respect special handling of rsp and rbp in Assembler
2007-09-28 08:45:26 -06:00
Joel Dice
d1681c0918
add a few more instructions to compile.cpp and fix bugs in others; invokespecial and invokevirtual are working
2007-09-27 16:20:54 -06:00
Joel Dice
f1bdc4c745
various fixes to get JIT working on x86_64
2007-09-26 18:01:38 -06:00
Joel Dice
2f3f97d550
clean up compile.cpp and support both x86_64 and i386; further refactoring to support JIT
2007-09-26 17:23:03 -06:00
Joel Dice
e7c8fb645a
JIT works for Instructions.java
2007-09-25 17:53:11 -06:00
Joel Dice
8d983c8a39
refactoring effort to pave the way for JIT compilation
2007-09-23 19:39:03 -06:00