Commit Graph

446 Commits

Author SHA1 Message Date
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