Joel Dice
11c2afbf91
bugfixes
2008-09-24 18:48:32 -06:00
Joel Dice
f2bf152eba
more bugfixes
2008-09-23 18:01:42 -06:00
Joel Dice
d4938115ef
various bugfixes
2008-09-23 15:18:41 -06:00
Joel Dice
b8dd495ada
fix build
2008-09-22 08:28:18 -06:00
Joel Dice
1b4ad1db42
snapshot
2008-09-20 17:42:46 -06:00
Joel Dice
96c6c7f8ea
don't log JIT results to stderr unless DebugCompile is true
2008-09-19 16:43:06 -06:00
Joel Dice
1657fb794c
support logging addresses and names of JIT-compiled methods to a file specified via a system property
2008-09-19 11:34:37 -06:00
Joel Dice
606e5cb238
lots of bugfixes - finally got Simple.pow() working
2008-09-14 20:28:42 -06:00
Joel Dice
bd9e8a77e2
improved tracking of data flow across control flow boundaries
2008-09-13 15:09:26 -06:00
Joel Dice
392a1417e5
lots of bugfixes and a few instructions added
2008-09-08 18:31:19 -06:00
Joel Dice
af9758a6d3
got a simple arithmetic test working
2008-09-07 14:12:11 -06:00
Joel Dice
ed806ca740
working towards compiling simple methods
2008-09-06 15:25:41 -06:00
Joel Dice
767c3ce2e4
snapshot
2008-08-28 16:43:35 -06:00
Joel Dice
a062d8c975
progress towards refactored JIT compiler to support PowerPC and data flow analysis across control flow boundaries
2008-08-23 12:04:36 -06:00
Joel Dice
9908bbcf50
sketch new version of x86.cpp to conform to new assembler.h APIs
2008-08-19 17:38:37 -06:00
Joel Dice
9654e3445d
refactor stack walking and visiting code to abstract away certain details of stack layout which are architecture-specific
2008-08-18 09:23:01 -06:00
Joel Dice
4a3be37c67
snapshot
2008-08-17 13:32:40 -06:00
Joel Dice
4a022147cd
Merge branch 'master' of oss.readytalk.com:/var/local/git/avian into powerpc
2008-08-16 12:56:41 -06:00
Joel Dice
5dc0959294
snapshot
2008-08-16 12:46:14 -06:00
Joel Dice
9efe6f1f05
snapshot
2008-08-16 11:45:36 -06:00
Joel Dice
c8cc7d931b
maintain a table to look up methods called via JNI
...
This simplifies the JNI implementation for looking up methods. It also
fixes a bug where an applications calls GetStaticMethodID with class A
and then calls CallStatic<Type>Method with class B which extends A. The
old code would look in the wrong method table and thus call the wrong
method.
2008-08-15 12:32:33 -06:00
Joel Dice
78e48996b5
fix handling of native methods in stack walking code
2008-08-14 12:13:05 -06:00
Joel Dice
2343483d8e
Merge branch 'master' of oss:/var/local/git/avian into powerpc
2008-07-13 12:47:49 -06:00
Joel Dice
bf58eaa6ba
assert that the target of an invokestatic call is a static method and that the targets of all other invokes are non-static
2008-07-12 14:52:14 -06:00
Joel Dice
fcd4f0c8f5
third attempt to properly fix race condition in compile function
2008-07-11 22:01:42 -06:00
Joel Dice
5a97caa4ca
fix recently-introduced GC safety bug
2008-07-11 19:24:37 -06:00
Joel Dice
b1f24079ec
fix race condition in compile function (part 2)
2008-07-11 18:14:30 -06:00
Joel Dice
0b79ab4fed
fix race condition in compile function
...
1. Thread A calls function F, which needs to be compiled. So it
compiles it.
2. Thread B calls function F, sees that it's already been compiled and
so runs it.
3. Thread B calls function G from function F, and G needs to be
compiled, but it needs to acquire the class lock first, which A owns.
4. Thread A causes a GC, walks thread B's stack, but function F has not
yet been added to the method tree, so it thinks the stack has no frames.
5. Thread A finally adds function F to the method tree.
6. Thread A causes another GC and walks thread B's stack again, and
this time it finds function F in the method tree.
7. AAAARRRRRGGGHHH!!!!!!
2008-07-11 18:11:13 -06:00
Joel Dice
23043d140f
snapshot
2008-07-05 14:21:13 -06:00
Joel Dice
8512d6c74c
Merge branch 'master' of oss:/var/local/git/avian into powerpc
2008-06-23 17:38:16 -06:00
Eric Scharff
86a5e9ba8a
Removed debugging that should not have been checked in
2008-06-16 11:47:54 -06:00
Eric Scharff
2bfe6f0d13
Ensure we align the stack before any time we might enter a C function from
...
generated code
2008-06-16 10:55:29 -06:00
dicej
358f3f801b
Merge branch 'master' of oss.ecovate.com:/var/local/git/avian into powerpc
2008-06-15 11:48:05 -06:00
Joel Dice
eabb37e6eb
add lcmp instruction to Compiler and corresponding LongCompare instruction to Assembler, since that's the only efficient way to implement the lcmp bytecode on x86
2008-06-12 10:56:48 -06:00
Joel Dice
dc136bb751
fix stack tracking weirdness for jsr instruction
2008-06-10 18:16:02 -06:00
Joel Dice
fc8c5a2ea9
fix a few bugs revealed by ProGuard optimizations, including too-early constant propagation during array loads and stores
2008-06-10 08:49:13 -06:00
dicej
0ccf8d57ea
rough sketch of powerpc support
2008-06-04 16:21:27 -06:00
Eric Scharff
2aadbaac38
Force alignment for native calls
2008-06-02 11:43:58 -06:00
Joel Dice
ecfb853f17
use relative branches where possible on amd64
2008-06-02 07:49:09 -06:00
Joel Dice
7d1ed0da05
Merge branch 'compiler' of oss.readytalk.com:/var/local/git/avian
...
Conflicts:
src/compiler.cpp
2008-05-31 19:30:28 -06:00
Joel Dice
7cdff9f1ee
disable debug logging and fix build warnings
2008-05-31 17:06:45 -06:00
Joel Dice
eacca98c3f
fix regressions affecting 32-bit systems
2008-05-31 16:53:37 -06:00
Joel Dice
1450b12e5b
visit thunk objects during GC in MyProcessor::visitObjects
2008-05-31 16:24:32 -06:00
Joel Dice
65830a76c5
improve efficiency of array bounds checks and generate a thunk table for native functions called indirectly
2008-05-31 16:14:27 -06:00
Joel Dice
f05318b787
fix thinkos in d2i and friends
2008-05-22 18:08:41 -06:00
Joel Dice
292f84a3fa
fix thinko in laload implementation
2008-05-19 08:50:37 -06:00
Joel Dice
3c30e815ec
optimize multiple loads from the same local variable
2008-05-18 22:31:52 -06:00
Joel Dice
b2e25f4e17
reorder makeMultidimensionalArray parameters to remove the need for the caller to save the stack pointer in a temporary register
2008-05-18 09:45:11 -06:00
Joel Dice
04f4ad4f58
fix variadic argument passing bug on amd64
2008-05-14 17:22:44 -06:00
Joel Dice
08beaad1b6
various bugfixes related to new register allocation code
2008-05-13 11:27:57 -06:00
Joel Dice
f1809897bd
fix build
2008-05-06 15:13:02 -06:00
Joel Dice
1cb9d0327a
initialize body of exception handler table for GC safety
2008-05-05 19:17:29 -06:00
Joel Dice
bf08cc4c53
fix array bounds checks
2008-04-30 11:47:25 -06:00
Joel Dice
e2b24263a2
various bugfixes
2008-04-30 09:44:17 -06:00
Joel Dice
377e2864d9
fix argument marshalling for floating point helper functions on 32-bit systems
2008-04-29 10:40:44 -06:00
Joel Dice
d50e3aaee0
preserve operands to CombineEvent and TranslateEvent when necessary
2008-04-29 10:25:20 -06:00
Joel Dice
c96f44d77d
don't skip move when MoveEvent is followed by a PushEvent which is not active; use existing register site in ValueSite when possible
2008-04-29 08:59:12 -06:00
Joel Dice
8738bddcb9
bugfixes, mainly concerning 32-bit machines
2008-04-28 16:08:31 -06:00
Joel Dice
1b5f14d847
re-enable tests in Misc and get them working
2008-04-28 09:53:48 -06:00
Joel Dice
9f8d77a2a9
Merge branch 'master' into compiler
...
Conflicts:
src/compile.cpp
src/compiler.cpp
src/compiler.h
2008-04-27 16:40:53 -06:00
Joel Dice
5b7372a3bb
various bugfixes; majority of tests now pass
2008-04-27 14:15:18 -06:00
Joel Dice
d5137a7cdf
use stack instead of registers to save data across jumps and branches; bugfixes
2008-04-26 14:56:03 -06:00
Joel Dice
23572b58bd
fix code ordering bug in MyProcessor::getStackTrace which caused the stack trace footprint calculation to be inaccurate
2008-04-25 16:18:19 -06:00
Joel Dice
0655b55378
resolve catch type for each exception handler during compilation
2008-04-24 16:06:36 -06:00
Joel Dice
1d7b00baff
backport getstatic/putstatic optimization from compiler branch
2008-04-23 16:56:02 -06:00
Joel Dice
7e1a2ea876
don't remove nodes from call node table, since it leads to a race condition
2008-04-23 15:01:47 -06:00
Joel Dice
d072b71c39
nth attempt to clean up MyStackWalker
2008-04-23 10:33:31 -06:00
Joel Dice
9e8e4b3de7
fix stack walker to properly handle the case of a native method calling another native method
2008-04-22 10:21:54 -06:00
Joel Dice
c7d679467f
handle case of visiting thread when it is executing one of the transition procedures
2008-04-22 09:31:40 -06:00
Joel Dice
df5258d1d8
various bugfixes concerning Thread.getStackTrace
2008-04-21 16:36:13 -06:00
Joel Dice
efb4e0241b
do all java->native class via Compiler::indirectCall to ensure we can always make an accurate stack trace (part 2)
2008-04-21 11:31:10 -06:00
Joel Dice
8c450a75a1
do all java->native class via Compiler::indirectCall to ensure we can always make an accurate stack trace
2008-04-21 11:29:36 -06:00
Joel Dice
2289d13cbb
make debug logging more concise
2008-04-20 18:20:38 -06:00
Joel Dice
d6c3b2327f
bugfixes; enums test now succeeds
2008-04-20 13:35:36 -06:00
Joel Dice
61f866ce89
do a garbage collection in compile.cpp if throwing an exception that required creating a backup heap
2008-04-20 10:21:32 -06:00
Joel Dice
8ebff705d6
various fixes
2008-04-19 23:23:08 -06:00
Joel Dice
8baa2bbd87
insert stack sync events before each instruction with more than one predecessor
2008-04-19 18:43:12 -06:00
Joel Dice
50eb1cbb71
peek at stack values during bounds checks
2008-04-19 16:13:57 -06:00
Joel Dice
eb77687a57
hello, world
2008-04-19 15:52:45 -06:00
Joel Dice
7b8b7a7b11
snapshot
2008-04-19 14:41:31 -06:00
Joel Dice
b19c52b501
control flow bugfixes
2008-04-19 01:03:59 -06:00
Joel Dice
ab7314e526
more bugfixes
2008-04-18 18:19:45 -06:00
Joel Dice
44b3a7c36d
various bugfixes
2008-04-17 22:16:20 -06:00
Joel Dice
a7134a2cd7
fix build
2008-04-17 16:07:32 -06:00
Joel Dice
df4a56d40c
Merge branch 'compiler' of oss.readytalk.com:/var/local/git/avian
2008-04-16 11:16:36 -06:00
Joel Dice
479c48f1dd
fix printf warning
2008-04-15 23:26:58 -06:00
Joel Dice
525f733171
Merge branch 'master' into compiler
...
Conflicts:
src/compile.cpp
src/compiler.cpp
src/compiler.h
2008-04-13 13:48:20 -06:00
Joel Dice
0d3e6b7793
simplify memory allocation interfaces
2008-04-13 12:15:04 -06:00
Joel Dice
85712d183b
fix stack walking from native methods
2008-04-11 18:06:04 -06:00
Joel Dice
aa9cb5c086
fix windows build
2008-04-11 17:01:17 -06:00
Joel Dice
f7a79f4874
fix frame object map size calculations
2008-04-11 15:00:18 -06:00
Joel Dice
bd618a51f6
translate exception handler table into a form which does not depend on the constant pool after JIT compiling a method
2008-04-11 13:03:40 -06:00
Joel Dice
2cf62a5926
various bugfixes in new stack trace code
2008-04-10 17:48:28 -06:00
Joel Dice
2d6eebf4d1
more progress on general stack tracing
2008-04-09 13:08:13 -06:00
Joel Dice
3fb90fdaa4
limit scope of lock acquisition in compileMethod2
2008-04-07 18:03:58 -06:00
Joel Dice
2c18ced808
use methodForIp in SegFaultHandler::handleSignal
2008-04-07 17:51:32 -06:00
Joel Dice
7ee29d4939
progress towards general stack trace support
2008-04-07 17:47:41 -06:00
Joel Dice
4102c97be3
fix bugs wrt calling methods via JNI
2008-04-01 11:37:59 -06:00
Joel Dice
9fe2cbff43
implement l2d and l2f byte codes
2008-03-20 18:37:58 -06:00
Joel Dice
a51c4cef39
bugfixes
2008-03-16 13:38:43 -06:00
Joel Dice
684b402e82
bugfixes and new instructions
2008-03-15 17:54:20 -06:00
Joel Dice
6bf0ca5bd9
various bugfixes and new instructions
2008-03-15 14:24:04 -06:00
Joel Dice
406f173982
handle constant array lengths and indexes properly; various bugfixes
2008-03-13 14:50:56 -06:00
Joel Dice
7cd79736c2
fix tracking of stack operations in compile.cpp
2008-03-11 10:57:35 -06:00
Joel Dice
9e2e614a15
various fixes to get invokevirtual working
2008-03-10 16:37:21 -06:00
Joel Dice
11dea0ad8e
don't bother calling methods which are known do nothing
2008-03-10 07:28:21 -06:00
Joel Dice
7cfb89bd2a
Merge branch 'master' into compiler
2008-03-09 11:31:55 -06:00
Joel Dice
9fe00836f7
fix stack mapping code to do as many passes as necessary
...
Previously, we had been doing exactly two passes over the event log to
caculate the stack object reference map at each trace point. It turns
out the correct number of passes depends on how many incorrect
assumptions we make about what the stack looks like at instructions with
multiple predecessors (i.e. targets of jumps and branches).
Each time we detect we've made one or more incorrect assumptions during
a pass, we must do another pass to correct those assumptions. That pass
may in turn reveal further incorrect assumptions, and so on.
2008-03-05 14:44:17 -07:00
Joel Dice
3317149cd2
Merge branch 'master' into compiler
...
Conflicts:
src/x86.cpp
2008-02-26 17:56:35 -07:00
Joel Dice
2edaa82801
prepend copyright notice and license to all source files; add license.txt and readme.txt
2008-02-19 11:06:52 -07:00
Joel Dice
e8ed2a4749
various bugfixes in new compiler
2008-02-17 15:29:04 -07:00
Joel Dice
d654c943f3
various bugfixes and tweaks in new compiler, primarily related to duplicating stack operands
2008-02-17 13:57:40 -07:00
Joel Dice
fa513beb2f
rework compiler interface to explicitly accept a size parameter for each operation where relevant
2008-02-11 19:06:12 -07:00
Joel Dice
b9fa7179d9
more work on new compiler; addition now works
2008-02-11 17:20:32 -07:00
Joel Dice
5b2f351f01
adapt compile.cpp to new compiler
2008-02-11 10:21:41 -07:00
Joel Dice
2346714d60
move local reference cleanup from invoke() to invokeNative2(), where it belonged all along
2008-02-01 14:17:54 -07:00
Joel Dice
eeac584474
fix thinko in invokeNative2
2008-01-30 17:08:47 -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
8150b957c9
support JIT compiling methods with unsorted exception handler tables
2008-01-25 17:17:27 -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
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
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
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
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
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