Commit Graph

576 Commits

Author SHA1 Message Date
Joel Dice
4c938d496e fix 64-bit bitshifts on 32-bit systems 2008-01-10 13:47:55 -07:00
Joel Dice
15f627701b fix thinko in 8-byte shift operation implementations 2008-01-10 11:38:25 -07:00
Joel Dice
f75c9c8d33 fix build breakage in interpret.cpp 2008-01-10 10:36:07 -07:00
Eric Scharff
4bce07ea12 Adapt windows code to new memory management system (keep track of length
at time of memory free)
2008-01-10 10:31:13 -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
633990b5fe force a major GC whenever the tenured fixed object footprint doubles 2008-01-09 08:21:58 -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
e3be0d197e maintain memory ceiling for tenured fixed objects and use it to trigger a major GC when appropriate 2008-01-08 17:02:27 -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
ef06be3904 fix bad machine code generated for mov2 2008-01-07 18:33:49 -07:00
Joel Dice
6a314ee65d Merge branch 'master' of dice:git/vm 2008-01-07 16:30:51 -07:00
Joel Dice
74a7da3010 implement and8, or8, and xor8 for 32-bit systems 2008-01-07 16:30:45 -07:00
Eric Scharff
466c3bb06e Changes for signal contexts in Mac OS X 10.5 (Leopard) 2008-01-07 16:20:48 -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
a8e9cc521c move some generally useful bitset functions from heap.cpp to common.h 2008-01-06 12:21:38 -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
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
6cecdc8295 relax rules for doing major collection; fix overconstrained assertion 2008-01-03 10:09:43 -07:00
Joel Dice
df20ce92f7 set Verbose=false 2008-01-01 18:48:04 -07:00
Joel Dice
eff3ba1418 fix thinko in visitDirtyFixies() 2008-01-01 18:45:23 -07:00
Joel Dice
e797a8f1ca fix GC bugs involving old fixed objects pointing to new objects 2008-01-01 18:08:27 -07:00
Joel Dice
1d7931a654 fix GC safety bugs in compile.cpp 2008-01-01 18:07:12 -07:00
Joel Dice
4378110506 avoid type aliasing warnings 2008-01-01 15:36:26 -07:00
Joel Dice
3a87011190 handle SIGBUS on OSX; this isn't working on OSX 10.4, but it might on 10.5 2008-01-01 11:19:55 -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
8d140c162d eliminate unecessary register and memory operand construction 2007-12-28 08:42:30 -07:00
Joel Dice
5d65e7c220 handle synchronized methods properly in JIT mode 2007-12-27 17:02:05 -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
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
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
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
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
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
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
f3e2795990 Merge branch 'master' of dice:git/vm 2007-12-21 17:26:34 -07:00
Joel Dice
e58972a968 fix regression in push instruction on amd64 2007-12-20 16:47:01 -07:00
Eric Scharff
ef97a5d8da Fix for assembler symbols for Mac build 2007-12-20 16:22:40 -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
6895ffaa99 GC safety and sign extension fixes 2007-12-17 19:09:32 -07:00
Joel Dice
2e33856d6b align stack to 16 byte boundary on amd64 2007-12-17 19:08:17 -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
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
Joel Dice
396c979de8 fix interpret.cpp build breakage 2007-12-11 14:29:04 -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
6b1f01511b refactor logical stack mechanism in JIT code 2007-12-09 16:06:47 -07:00
Joel Dice
f8cda0cd85 more JIT compiler progress 2007-12-09 15:45:43 -07:00
Joel Dice
5b5a4fe8d7 progress on JIT compiler sketch 2007-12-09 13:03:21 -07:00
Joel Dice
55b956916f initial sketch of JIT compiler 2007-12-08 16:22:13 -07:00
Joel Dice
22edd2e6a4 set Verbose to false in heap.cpp 2007-12-08 16:19:48 -07:00
Joel Dice
00b7fa3b9d assert that fixed object has object mask before marking it 2007-12-07 15:58:38 -07:00
Joel Dice
d057ac6a47 mark classes containing object array fields as needing an object mask in type-generator.cpp 2007-12-07 10:05:10 -07:00
Joel Dice
c096c8f1e4 only consider gen2 oversized if its capacity exceeds (InitialGen2CapacityInBytes / BytesPerWord) 2007-12-07 08:35:28 -07:00
Joel Dice
612f4fa0b8 shrink gen2 segment if it grows too large 2007-12-07 08:31:41 -07:00
Joel Dice
edf415102a assert heap count is empty in System::dispose() 2007-12-07 08:30:30 -07:00
Joel Dice
0a63fc3865 fix a couple thinkos in jnienv.cpp 2007-11-29 08:04:07 -07:00
Joel Dice
d8374a76e2 check again for entry in monitorMap after entering the exclusive state in objectMonitor() in case another thread beat us to creating a monitor for the object 2007-11-29 08:03:45 -07:00
Joel Dice
5b6a63cbca avoid uninitialized value warnings 2007-11-27 16:04:15 -07:00
Joel Dice
5fa7b074b4 various threading bugfixes 2007-11-27 15:23:00 -07:00
Joel Dice
56a5cf2503 fix thinko in jsr_w implementation 2007-11-27 15:22:05 -07:00
Joel Dice
6ac124f2fb protect local variables in red-black tree implementation from GC 2007-11-27 08:46:31 -07:00
Joel Dice
466c958d2b implement persistent red-black tree in util.cpp based on PersistentSet.java 2007-11-26 18:40:47 -07:00
Joel Dice
0bbe9489a7 flesh out call tracing in new JIT code 2007-11-26 16:15:53 -07:00
Joel Dice
49ed41daa0 refactor stack walking interface in processor.h and sketch stack walking implementation in compile2.cpp 2007-11-25 16:00:55 -07:00
Joel Dice
856935acc2 more work on new JIT code 2007-11-21 15:15:33 -07:00
Joel Dice
a017dab73a handle weak maps properly in hashMapResize, hashMapRemove, etc.; move Processor::parameterFootprint() into machine.h/machine.cpp 2007-11-20 15:24:02 -07:00
Joel Dice
ded1016b32 clean up compile2.cpp so it compiles (but does not yet link) 2007-11-20 09:21:17 -07:00
Joel Dice
6c8a35c341 move populateMultiArray from interpret.cpp to process.h 2007-11-20 09:20:26 -07:00
Joel Dice
37a1aa72f9 sketch of Frame class implementation for new JIT code 2007-11-19 14:37:50 -07:00
Joel Dice
2eeff1d50e sketch implementations of lookupswitch and tableswitch 2007-11-19 08:11:39 -07:00
Joel Dice
7eb49f272c sketch or stub-out remaining instructions in new JIT code 2007-11-18 13:32:31 -07:00
Joel Dice
e9fc1d9057 initial sketch of new JIT code 2007-11-18 12:19:27 -07:00
Joel Dice
cab88c7e1f remove JIT-related data structures from types.def since that code is being reworked 2007-11-18 12:18:37 -07:00
Joel Dice
d105a180db remove unecessary namespace qualifier 2007-11-18 12:17:14 -07:00
Joel Dice
115622f54a add GetArrayLength, NewObject, NewObjectV, MonitorEnter, and MonitorExit JNIEnv methods 2007-11-14 16:22:29 -07:00
Joel Dice
313816ee34 minor tweaks to reduce memory usage 2007-11-06 08:29:05 -07:00
Joel Dice
fe0e542afe finish support for inline vtables in class objects; convert constant pools from arrays to singletons to reduce memory footprint 2007-11-05 14:40:17 -07:00
Joel Dice
f1bc2be9f9 if we can't resolve a bootstrap class in isAssignableFrom(), we swallow the exception and return false 2007-11-05 09:08:08 -07:00
Joel Dice
fe0708c09a check for all non-virtual methods in invoke(), not just static ones 2007-11-05 08:52:03 -07:00
Joel Dice
16ea75f91c preserve vm flags of bootstrap class (except for BootstrapFlag) in updateBootstrapClass() 2007-11-05 08:39:48 -07:00
Joel Dice
19d36cc463 implement impdep1 instruction for lazily loading bootstrap classes 2007-11-05 08:29:43 -07:00
Joel Dice
6c0e0c37e2 snapshot 2007-11-05 07:28:46 -07:00
Joel Dice
514be2dc87 snapshot 2007-11-04 16:10:33 -07:00
Joel Dice
94e9bd0fd2 clean up bootstrap type generation to eliminate redundancy (broken) 2007-11-04 14:15:28 -07:00
Joel Dice
bea4a73f54 Merge branch 'singleton' 2007-11-02 15:56:48 -06:00
Joel Dice
7dfbd87a40 bugfixes 2007-11-02 15:42:19 -06:00
Joel Dice
e820b6a8a4 sketch of singleton support 2007-11-02 15:08:14 -06:00
Joel Dice
80775f6cf8 initial sketch of singleton support 2007-11-02 08:15:06 -06:00
Eric Scharff
eb3bd1ce7c Got strip working for Mac OS X 2007-11-01 14:37:51 -06:00
Eric Scharff
625f0006c9 Fixed typo for Mac OS X builds 2007-11-01 14:06:26 -06:00
Eric Scharff
7f33b7371b Factored JNIEXPORT into one place. Adopted the visbility attribute that
should allow strip to work on Mac OS X
2007-11-01 14:00:22 -06:00
Joel Dice
b71d5104ba snapshot 2007-11-01 13:24:09 -06:00
Joel Dice
94bae01b39 never call wasCollected() on a fixed object, since it will give a random result 2007-10-29 16:12:16 -06:00
Joel Dice
956106f518 implement StringBuilder.delete() more efficiently 2007-10-29 15:40:05 -06:00