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