Commit Graph

334 Commits

Author SHA1 Message Date
Joel Dice
e44f326377 various bugfixes 2008-11-29 18:39:42 -07:00
Joel Dice
0ec5ad3701 update makefile to optionally build and use a boot image; various bugfixes 2008-11-29 16:08:14 -07:00
Joel Dice
b8056d905c fix bugs in allocating and populating method object pools 2008-11-28 18:23:01 -07:00
Joel Dice
4d1af63ed2 initial work on booting from boot image 2008-11-28 15:02:45 -07:00
Joel Dice
a8a030140c various bugfixes 2008-11-27 21:44:04 -07:00
Joel Dice
f698c24ea6 delay resolving method call offsets until all methods have been compiled when creating a boot image 2008-11-27 13:59:40 -07:00
Joel Dice
61ecb56e21 Merge branch 'master' of oss:/var/local/git/avian into powerpc 2008-11-25 16:19:21 -07:00
Joel Dice
fdb9c05ac6 avoid uninitialized value warnings from valgrind when DebugFrameMaps is true 2008-11-25 16:01:30 -07:00
Joel Dice
eea2225176 save locals to memory before executing any instruction which might trigger an exception if that instruction lies within an exception handler 2008-11-25 10:34:48 -07:00
Joel Dice
035aa0ecd4 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian into bootimage
Conflicts:

	src/compile.cpp
	src/machine.h
	src/util.h
2008-11-23 17:02:34 -07:00
Joel Dice
20cf42c5e4 more work on boot image creation 2008-11-23 16:58:01 -07:00
Joel Dice
4392b04fd0 avoid creating unecessary garbage in treeInsertNode and friends 2008-11-22 16:25:35 -07:00
Joel Dice
92a8a4d83b clean up subroutine code in wake of merge from master branch 2008-11-15 18:03:43 -07:00
Joel Dice
9b6d4fdeab Merge branch 'master' of oss.readytalk.com:/var/local/git/avian into powerpc
Conflicts:

	src/compile.cpp
2008-11-15 17:49:08 -07:00
Joel Dice
dc2700d913 ensure that the saved exception in a finally block is visited during GC when the jsr instruction is used 2008-11-15 17:28:45 -07:00
Joel Dice
fb770d10fb implement jsr/ret support
The Subroutine test won't pass due to a bug in the stack mapping code
such that objects may be missed during GC.
2008-11-13 17:59:21 -07:00
Joel Dice
acfd9689b2 Merge branch 'master' of oss:/var/local/git/avian into powerpc
Conflicts:

	makefile
	src/assembler.h
	src/compile.cpp
	src/compiler.cpp
	src/compiler.h
	src/finder.cpp
2008-11-11 12:15:19 -07:00
Joel Dice
0bef625500 fix thinko in logCompile 2008-11-11 09:17:11 -07:00
Joel Dice
c80eb51c17 Merge branch 'master' into powerpc
Conflicts:

	makefile
	src/assembler.h
	src/compile.cpp
	src/compiler.cpp
	src/compiler.h
	src/finder.cpp
2008-11-11 08:21:48 -07:00
Joel Dice
5fc9ad058b more bugfixes; all tests pass on amd64 2008-11-10 17:07:44 -07:00
Joel Dice
00d8142de9 various bugfixes; all but one test are passing on amd64 2008-11-09 16:56:37 -07:00
Joel Dice
000aeb25c1 handle case where first instruction is the target of a branch properly 2008-11-08 16:21:30 -07:00
Joel Dice
61539bae31 fix stack mapping bugs which broke GC 2008-11-08 15:36:38 -07:00
Joel Dice
312539af64 fix moves involving sign or zero extension 2008-11-08 13:47:26 -07:00
Joel Dice
f01f4441d9 various bugfixes and instructions implemented to get more tests passing 2008-11-06 17:39:38 -07:00
Joel Dice
1ba497d90a fix Exceptions test for amd64 2008-11-02 15:25:51 -07:00
Joel Dice
04da77e95b snapshot 2008-11-02 13:35:35 -07:00
Joel Dice
dd4dc18916 snapshot 2008-11-01 13:14:13 -06:00
Joel Dice
7d6ca28b2f snapshot 2008-10-18 18:15:57 -06:00
Joel Dice
5391c68efd bugfixes 2008-10-14 18:45:31 -06:00
Joel Dice
aaaf388652 fix handling of instructions which are targets of more than one conditional branch 2008-10-13 18:18:18 -06:00
Joel Dice
81cb951b08 fix stack corruption due to spurious pop events generated for jsr bytecodes 2008-10-09 17:14:52 -06:00
Joel Dice
83d5d6fde4 avoid unnecessary moves in resolveJunctionSite; distinguish between branches and other events when deciding when to marshal values at junctions 2008-10-07 18:08:13 -06:00
Joel Dice
f6c4496166 various bugfixes 2008-10-05 18:50:59 -06:00
Joel Dice
83aa342bc8 hello, world on amd64 2008-10-04 11:26:35 -06:00
Joel Dice
823327a00b fix bytecode address calculations which broke when using -Os 2008-09-29 08:46:44 -06:00
Joel Dice
d409f89d5d ensure that only one value holds a given frame site at at time 2008-09-28 15:56:12 -06:00
Joel Dice
61c708d7b2 reserve stack space for arguments to native calls 2008-09-28 13:00:52 -06:00
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