Commit Graph

836 Commits

Author SHA1 Message Date
Joel Dice
55e3e8871d trigger major GCs more aggressively under low memory conditions 2008-01-31 17:50:38 -07:00
Joel Dice
491955af05 fix recent regression in native method lookup on Windows 2008-01-30 17:09:21 -07:00
Joel Dice
eeac584474 fix thinko in invokeNative2 2008-01-30 17:08:47 -07:00
Joel Dice
34cc390286 fix uninitialized variable warning 2008-01-29 10:02:58 -07:00
Joel Dice
d693393293 remove Machine::lastLibrary and rename firstLibrary to libraries 2008-01-29 08:19:15 -07:00
Eric Scharff
2363d6e8eb Fix debug build for Mac OS X 2008-01-28 16:35:23 -07:00
Eric Scharff
e5f95ae89d Fix pesky compiler warning on unused variable in linux. 2008-01-28 16:22:16 -07:00
Eric Scharff
8a8a123e02 Merge branch 'master' of ssh://dice.ecovate.com/~dicej/git/vm 2008-01-28 16:17:28 -07:00
Eric Scharff
c1f3d28d24 Fixes dynamic symbol loading bug on Mac OS X.
On OS X, when you call dlopen() on a null library, and then call dlsym(),
the most recently loaded symbols are always used, no matter what flags
we seem to pass to dlopen().  The solution is to explicitly find the name
of the running executable, and open that as a library.
2008-01-28 16:17:22 -07:00
Dain
098e185ebe fixed compile error, function in vm namespace needed to call function in the anonymous namespace 2008-01-28 13:24:32 -07:00
Joel Dice
d68c2e6e2c when looking up native methods, check for both the undecorated and decorated symbol before moving on to the next library 2008-01-28 11:21:09 -07:00
Joel Dice
008ac07079 refactor native method resolution to be simpler and more robust 2008-01-28 10:27:02 -07:00
Joel Dice
de6a1ded92 ensure that we populate the interface vtables of a class which does not declare any new virtual methods but does implement new interfaces relative to its superclass 2008-01-28 08:12:06 -07:00
Joel Dice
941ca81e79 fix build breakage in windows.cpp 2008-01-25 17:48:03 -07:00
Joel Dice
8150b957c9 support JIT compiling methods with unsorted exception handler tables 2008-01-25 17:17:27 -07:00
Joel Dice
e403a625d1 second try to fix library symbol lookup 2008-01-25 16:38:26 -07:00
Joel Dice
4ea8b0a1fe Merge branch 'master' of dice:git/vm 2008-01-25 16:25:37 -07:00
Joel Dice
35ada0ea65 search libraries for symbols in the order they are loaded 2008-01-25 16:25:30 -07:00
Joel Dice
6bca3a8665 additional tweaks to make embedded resources work on darwin 2008-01-23 10:12:56 -07:00
Joel Dice
618684de6e support embedded resources on darwin via binaryToMacho.cpp 2008-01-23 09:56:25 -07:00
Joel Dice
73ba3fcef7 fix build breakage in stress mode 2008-01-23 09:55:29 -07:00
Joel Dice
125fe3440e allow java.lang.Object with no virtual methods, which may occur due to code shrinking 2008-01-21 16:42:12 -07:00
Joel Dice
c9714c73f2 fix frame map calculations involving exception handlers 2008-01-20 16:03:28 -07:00
Joel Dice
422133d1ba initialize vtables with pointers to JIT function, including native methods, since this allows code shrinkers to eliminate unused methods without confusing the VM 2008-01-20 15:05:59 -07:00
Joel Dice
a69c366d07 save 'this' pointer on entrance to synchronized, non-static, non-native methods so we can release the monitor on exit, reguardless of whether the pointer at local index zero is overwritten 2008-01-20 11:55:08 -07:00
Joel Dice
e9826b2d7f accept foo.bar.Baz as well as foo/bar/Baz in FindClass 2008-01-19 13:30:11 -07:00
Joel Dice
ee60d48cfe fix subtle bug in hashMapInsert which caused us to update the old array previously associated with the hash map, whereas a GC causes the table to be resized when a weak reference is removed and thus a new array used 2008-01-19 13:12:16 -07:00
Joel Dice
d97fab6036 comment out some debugging log messages 2008-01-18 18:49:30 -07:00
Joel Dice
35160e46d8 don't include embedded boot classpath in libvm.a, only the executable 2008-01-18 17:54:36 -07:00
Joel Dice
88a8e74a53 fix register to memory mov1 implementation 2008-01-18 15:01:50 -07:00
Joel Dice
e2fc8a62c7 permit state transitions from idle to exclusive 2008-01-17 18:47:32 -07:00
Joel Dice
090cd8a209 re-enter active state before throwing exception in wait() 2008-01-17 18:32:07 -07:00
Joel Dice
9ad00d0ea3 remove unused function and add some thread state assertions 2008-01-17 18:27:44 -07:00
Joel Dice
7252fdcbf3 enter active state immediately upon entry to Release*ArrayElements 2008-01-17 18:26:46 -07:00
Joel Dice
81dde8bdbb fix thinko in CallLongMethodV 2008-01-17 17:56:55 -07:00
Joel Dice
9a13df3024 fix marshalling return values when calling java methods from native code 2008-01-17 12:55:05 -07:00
Joel Dice
7a7c36f8e0 another attempt to whip Monitor::wait into shape 2008-01-16 15:17:28 -07:00
Joel Dice
bb85f5c94d fix wait/notify regression introduced in last commit 2008-01-16 14:58:27 -07:00
Joel Dice
6ba7852a62 tweak System::Monitor::wait to avoid notify deadlock 2008-01-16 13:46:39 -07:00
Joel Dice
f5f7b01689 remove extern "C" modifier from vmPrintTrace definition 2008-01-16 10:48:14 -07:00
Joel Dice
4571e75f7a add vmPrintTrace function which can print a Java stack trace without allocating memory 2008-01-16 10:30:12 -07:00
Joel Dice
86bdd48a66 when invoking Java methods from native code on 32-bit systems, push 32-bit halves of 64-bit values in reverse order since they are reversed again when pushed on the stack 2008-01-15 18:01:11 -07:00
Joel Dice
d1b4dfccd0 fix class cast exception message thinko 2008-01-15 16:33:20 -07:00
Joel Dice
37b33457c1 Merge branch 'master' of dice:git/vm 2008-01-14 16:37:41 -07:00
Joel Dice
2f83468b80 remove context argument from Allocator::tryAllocate and Allocator::allocate, since we aren't using it after all 2008-01-14 16:37:24 -07:00
Eric Scharff
fbec4bec83 Use non-standard MAP_ANON for memory mapping 2008-01-14 10:58:11 -07:00
Joel Dice
2d042616d0 Merge branch 'master' of dice:git/vm 2008-01-14 09:40:27 -07:00
Joel Dice
a89c22b493 force major collection under low memory condition 2008-01-14 09:39:57 -07:00
Joel Dice
029973943e increase max heap size to 128MB 2008-01-14 09:38:14 -07:00
Dain
faa3052b28 set MAP_32BIT for 32bit machines 2008-01-14 09:33:54 -07:00
Joel Dice
e4c1f6cc8f protect local variable from GC in findUnwindTarget 2008-01-14 09:33:26 -07:00
Joel Dice
0298865efa refactor memory allocation to allow better detection and handling of low-memory conditions 2008-01-13 15:05:08 -07:00
Joel Dice
8df1118120 add a comment explaining our dummy libstdc++ functions 2008-01-11 17:34:57 -07:00
Joel Dice
d1ec7cd0e8 remove debug logging 2008-01-11 15:19:44 -07:00
Joel Dice
f0d556b0ec fix handling of call target resolution for non-virtual calls 2008-01-11 15:16:24 -07:00
Joel Dice
a56c0ad2ef fix predicate used to determine whether to resolve address operands 2008-01-11 11:11:31 -07:00
Joel Dice
570925ad0e handle locking for synchronized native methods 2008-01-11 10:49:11 -07:00
Joel Dice
13fae991fd resolve address operands only when writing the final output 2008-01-11 09:44:16 -07:00
Joel Dice
09a83e63b8 change mov to mov8 in return8 2008-01-10 15:41:57 -07:00
Joel Dice
a17cbf2880 fix reversed operand encoding for shift instructions 2008-01-10 14:56:08 -07:00
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
Joel Dice
75d4a4ff96 implement a few classpath methods required by SWT for Win32 2007-10-29 14:57:33 -06:00
Joel Dice
a80677d673 fix aliasing warnings 2007-10-28 18:51:38 -06: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
85012ba5b0 fix thinko in NewString() and make NewStringUTF() more robust 2007-10-26 18:04:20 -06:00
Joel Dice
fcc50f4da6 abort if vsnprintf() overflows in makeByteArray 2007-10-26 18:03:28 -06:00
Joel Dice
46ac6f92ee implement JNIEnv::NewString() 2007-10-26 15:23:54 -06:00
Joel Dice
e892f1bff5 refactor System.getProperty() to reduce coupling with native code 2007-10-26 12:13:21 -06:00
Joel Dice
ccdc7fdda3 eliminate bin2c and use objcopy instead to translate binary data to an object file 2007-10-26 11:38:36 -06:00
Eric Scharff
6342fc7ccb Read 2- and 3-byte UTF8 constants gracefully (but not correctly) 2007-10-25 17:58:53 -06:00
Joel Dice
74701b0790 fix thinko parsing properties in JNI_CreateJavaVM 2007-10-25 17:17:38 -06:00
Eric Scharff
34c5f184ed Fix static cast to make gcc happy 2007-10-25 16:34:40 -06:00
Joel Dice
95621ac2d0 Merge branch 'master' of dice:git/vm 2007-10-25 16:06:10 -06:00
Joel Dice
20cc788fa4 support classloading from jar files compiled into the executable 2007-10-25 16:06:05 -06:00
Eric Scharff
a81b77a37e fixes i2f i2d implementation. Fixes image drawing bugs on Mac OS X.
Also fixes a crash caused by implementing StringBuffer.toString(float)
2007-10-25 14:26:51 -06:00
Joel Dice
d4656e8a52 handle ConstantValue attributes for static fields 2007-10-25 13:20:39 -06:00
Joel Dice
b12b779c7f add support for passing properties to the VM via JNI; use vm.builtins property to specify builtin libraries 2007-10-25 12:33:43 -06:00
Joel Dice
1c90ea5fd6 rewrite main.cpp to use jni.h interface for creating the VM and invoking the main method of the specified class 2007-10-25 09:04:13 -06:00
Joel Dice
89b22dd3ab fix JNI invocation for return types of less than 32-bits 2007-10-24 17:06:12 -06:00
Joel Dice
92d61c1ba2 superficial tweak 2007-10-24 17:05:14 -06:00
Joel Dice
2c2718fdb5 primitive parseUtf8() implementation to ensure we handle null characters correctly, at least 2007-10-24 15:05:15 -06:00
Joel Dice
e66c53b446 remove unused file 2007-10-24 11:24:48 -06:00
Joel Dice
eaf1d205cd more windows port fixes 2007-10-24 11:24:19 -06:00
Joel Dice
f2f453cf75 more system-specific tweaks for windows port (cont.) 2007-10-24 10:27:59 -06:00
Joel Dice
5bfd90cfed more system-specific tweaks for windows port 2007-10-24 10:24:02 -06:00
Joel Dice
0f1a9bc77e remove debug logging 2007-10-24 09:52:09 -06:00
Joel Dice
394d80a07a fix use of uninitialized values in JarElement; use system-specific path separator in finder 2007-10-24 09:46:09 -06:00
Joel Dice
1c948652fd fix posix build breakage 2007-10-23 17:22:56 -06:00
Joel Dice
c3300948bf fix a few threading bugs in windows port 2007-10-23 16:21:28 -06:00
Joel Dice
eb4cea6291 more work on the windows port; we now have some tests passing 2007-10-23 14:05:59 -06:00
Joel Dice
1381267e70 mork work on the windows port 2007-10-23 11:22:48 -06:00
Joel Dice
58dec050c8 sketch of windows port 2007-10-22 19:00:57 -06:00
Joel Dice
ac4b28ffe6 refactor build system to support cross-compiling 2007-10-22 14:56:27 -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
2be830cae7 Merge branch 'master' of dice:git/vm 2007-10-17 11:22:16 -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
4ecd84e373 Merge branch 'master' of dice.readytalk.com:git/vm 2007-10-16 19:23:31 -06:00
Joel Dice
f5c74dcaec fix invalid use of Heap::needsMark in vm::mark 2007-10-16 19:23:20 -06:00
Joel Dice
5fb1495f4d bugfixes and new instructions in compile.cpp 2007-10-16 19:21:35 -06:00
Joel Dice
29b5e81aed align fields naturally in parseFieldTable 2007-10-16 19:20:36 -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
f58c6ef4e8 mark destination object array in System.arraycopy() if it resides in the tenured heap 2007-10-13 15:47:45 -06:00
Joel Dice
96c3b2b6a7 superficial code cleanup 2007-10-12 18:22:52 -06:00
Joel Dice
dbbcf90e6c Merge branch 'master' of dice:git/vm 2007-10-12 16:06:39 -06:00
Joel Dice
b8ce22dc42 JIT GC bugfixes 2007-10-12 16:06:33 -06:00
Eric Scharff
05321e97f9 If you pass 0 to printTrace, it will print the stack trace of a null
pointer exception.  This dramatically simplifies debugging in GDB:

p vm::printTrace(t, 0)
2007-10-12 14:54:37 -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
e32a335079 Merge branch 'master' of dice:git/vm
Conflicts:

	src/cdecl.S
2007-10-04 17:17:57 -06:00
Joel Dice
feeaecbfd8 more work on JIT unwinding 2007-10-04 16:41:19 -06:00
Eric Scharff
a9fcb59e6c Fix a floating point comparison bug - Gets simple SWT examples to work on
Mac OS X
2007-10-04 10:21:14 -06:00
Eric Scharff
ace36f1b15 Simplify code for Mac stack alignment conventions 2007-10-04 07:30:39 -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
Eric Scharff
d2053d51d2 Floats are always passed as doubles in varargs calls. Properly pop them
off the stack and cast them
2007-10-02 09:50:08 -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
37ccb6cb46 Merge branch 'master' of dice:git/vm 2007-09-27 16:21:00 -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
bd95ccdbd6 clear object header flags after copying array in Object.clone() 2007-09-27 16:10:29 -06:00
Eric Scharff
2ae6aa7ddf Fix System.arraycopy when the source and dest are the same 2007-09-27 15:06:56 -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
770e48c197 make Object.clone() work for arrays 2007-09-26 13:45:52 -06:00
Joel Dice
1207989f72 fix build and runtime bugs introduced in last commit 2007-09-26 08:43:40 -06:00
Joel Dice
e7c8fb645a JIT works for Instructions.java 2007-09-25 17:53:11 -06:00
Joel Dice
1c90708abf bugfixes for recent refactoring effort 2007-09-24 07:46:48 -06:00
Joel Dice
8d983c8a39 refactoring effort to pave the way for JIT compilation 2007-09-23 19:39:03 -06:00
Joel Dice
65a3ee4277 superficial tweaks 2007-09-21 08:16:43 -06:00
Joel Dice
3838cd0e68 strip leading slashes from path in JarElement::find()/exists() 2007-09-21 08:15:39 -06:00
Eric Scharff
36f1d3206e The proper extension for Mac JNI libraries is .jnilib. Hard-coded constants
have been factored to common locations.  Furthermore, the LD_LIBRARY_PATH
environment variable is DYLD_LIBRARY_PATH on Mac OS X.
2007-09-20 10:13:41 -06:00
Joel Dice
a688a6f61a use lib%s.dylib to map library names on Darwin 2007-09-19 18:37:25 -06:00
Joel Dice
54cabf9240 align SP to 16 byte boundary on Darwin in cdecl.S 2007-09-19 18:36:35 -06:00
Joel Dice
1d68f87f75 remove unnecessary .type declaration from amd64.S 2007-09-19 18:12:08 -06:00
Joel Dice
a3ef7f2b94 slightly more efficient implementation of pad() 2007-09-19 18:11:19 -06:00
Joel Dice
9de7f39ceb Merge branch 'master' of dice:git/vm 2007-09-19 17:51:26 -06:00
Joel Dice
28f6f29477 eliminate instructions from *.S which restored the stack pointer unnecessarily 2007-09-19 17:29:20 -06:00
Eric Scharff
ebdc192f64 .type call was unnecessary - now removed 2007-09-19 10:35:13 -06:00
Eric Scharff
e5c8cb4e41 Reverted the assembly, since the Mac didn't support this anyway 2007-09-19 10:27:48 -06:00
Eric Scharff
c9332e4615 Mac unsigned argument is different than other platforms 2007-09-19 10:26:08 -06:00
Eric Scharff
f430f3f00e Various fixes (mostly making things more strict) to get the code to
compile on Mac OS X
2007-09-19 10:22:19 -06:00
Joel Dice
8b17df5b48 set verbose constants to false in heap.cpp 2007-09-19 08:33:43 -06:00
Joel Dice
cd990969cd fix allocation of large objects in allocate2(); remove references to jscheme and SWT in makefile and test directory 2007-09-19 08:16:49 -06:00
Joel Dice
49a3c08cc9 use dlopen()/dlsym() to resolve builtin JNI methods 2007-09-18 17:30:09 -06:00
Joel Dice
b0bb443fa2 fix i2l to preserve signedness 2007-09-17 16:16:17 -06:00
Joel Dice
1f6c2dbbb1 implement Set<Primitive>ArrayRegion() 2007-09-17 16:15:42 -06:00
Joel Dice
8af76b0da6 fix several bugs in Finder involving jar file parsing and extraction 2007-09-17 08:11:41 -06:00
Joel Dice
dc9ae3d269 fix interpretation of stat() return value in System::identify() 2007-09-17 07:16:55 -06:00
Joel Dice
59d26362fa mark zlib return values as UNUSED to fix fast build 2007-09-17 07:16:00 -06:00
Joel Dice
b88438d2fd sketch of JAR support in Finder 2007-09-16 18:13:36 -06:00
Joel Dice
aec0c29084 fix math bug in parseFieldTable which lead to incorrect objectMasks 2007-09-15 11:22:22 -06:00
Joel Dice
912617c4ff gc safety bugfixes 2007-09-14 18:32:32 -06:00
Joel Dice
223e6bff0f gc protection bugfix 2007-09-14 18:23:32 -06:00
Joel Dice
e76e4ccdf0 protect local object variable in multianewarray 2007-09-14 17:05:06 -06:00
Joel Dice
4ade402f1b bugfixes; SWT ControlExample works on x86_32 2007-09-14 14:35:37 -06:00
Joel Dice
bb520e4ef9 bugfixes 2007-09-13 21:59:39 -06:00
Joel Dice
ce97b6eecb implement i2d and i2f 2007-09-13 19:42:12 -06:00
Joel Dice
b0926e71fb fix math errors when walking object map in collect()::Client::walk() 2007-09-13 16:45:09 -06:00
Joel Dice
dc34707f98 fix Call*Method() calls to wrong run() function 2007-09-13 10:43:33 -06:00
Joel Dice
542888a1d3 bugfixes 2007-09-12 21:15:16 -06:00
Joel Dice
7cb3a30a91 sketch of Runtime.exec() and Calendar; misc bugfixes 2007-09-12 18:21:37 -06:00
Joel Dice
cb03240c64 quick sketches of various SWT 3.3 dependencies 2007-09-11 19:13:05 -06:00
Joel Dice
132936ba2e fix backwards logic in System::Local assertions 2007-09-10 20:13:55 -06:00
Joel Dice
e5987f2a22 JNIEnv and JavaVM method implementations 2007-09-10 17:33:58 -06:00
Joel Dice
a9f9755221 more JNIEnvVTable entries 2007-09-07 17:20:21 -06:00
Joel Dice
bd4d9fdeb2 several things: change object typedef to Object* instead of void* to improve type safety; add JNICALL attributes to JNI functions; implement additional JavaVM methods 2007-09-06 18:21:52 -06:00
Joel Dice
f72f95d7ca check for exceptions in invoke() 2007-08-28 17:38:47 -06:00
Joel Dice
b8de552797 re-implement System.getProperty to separate vm-specific properties from others 2007-08-27 07:46:17 -06:00