Commit Graph

1607 Commits

Author SHA1 Message Date
Joel Dice
4c27755a53 fix endianness issue storing and loading longs 2009-03-11 21:07:30 -06:00
Joel Dice
49cd2dd9bf fix powerpc bootimage build (second try) 2009-03-10 19:08:16 -06:00
Joel Dice
6c271ac994 fix powerpc bootimage build 2009-03-09 18:52:09 -06:00
Joel Dice
c11203b401 pass srcSelectSize instead of srcSize to Architecture::plan in appendMove 2009-03-09 12:31:41 -06:00
Joel Dice
8ac6fb9d75 fix x86_64 build 2009-03-09 15:29:37 +00:00
Joel Dice
89a2739165 sync instruction cache after compiling a method 2009-03-09 08:26:23 -06:00
Joel Dice
4347228585 fix thinko in addC for zero constant case 2009-03-08 20:55:54 -06:00
Joel Dice
68ed5e6cb5 fix addC for case where bit 15 of constant is set 2009-03-08 20:09:06 -06:00
Joel Dice
8b0f7d790f don't assume sizeof(bool) == 8 2009-03-07 18:23:28 -07:00
Joel Dice
e1395f300a fix warnings for optimized build 2009-03-07 17:52:18 -07:00
Joel Dice
14c6deb710 do two passes in MyCompiler::initLocalsFromLogicalIp in order to properly link multiword values together 2009-03-07 17:39:55 -07:00
Joel Dice
661b49ea92 Merge branch 'master' into powerpc 2009-03-07 16:41:17 -07:00
Joel Dice
abe6ada0c2 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian 2009-03-07 16:40:56 -07:00
Joel Dice
ea4764c924 Merge branch 'master' into powerpc 2009-03-07 16:40:23 -07:00
Joel Dice
7add34944b protect source site from being used as a temporary for move operations 2009-03-07 16:32:05 -07:00
Joel Dice
376941ab35 fix single-precision float marshalling in dynamicCall 2009-03-07 14:32:08 -07:00
Joel Dice
0aaee96479 allocate executable memory area all at once to ensure it is contiguous, since immediate relative jumps on PowerPC can only cross 2^26 bytes of memory 2009-03-07 12:03:27 -07:00
Joel Dice
fd7bef7db3 only accept sites conforming to specified SiteMask in getTarget 2009-03-06 17:37:54 -07:00
Joel Dice
9b9ae62541 defer to moveCR when adding or subtracting zero 2009-03-06 17:11:51 -07:00
Joel Dice
33ba8d084d avoid unecessary subtraction in tableswitch 2009-03-06 17:11:14 -07:00
Joel Dice
b5f76d96dc handle exception case in makeCodeImage 2009-03-06 17:10:31 -07:00
Joel Dice
e61d05f00b undo temporary big endian offset correction before leaving maybeMove 2009-03-06 12:14:37 -07:00
Joel Dice
7388da6282 fix endianness issues when loading values smaller than BytesPerWord from the stack 2009-03-06 10:56:11 -07:00
Joel Dice
ca0d4b44c1 defer moveZCR to moveCR 2009-03-06 10:54:43 -07:00
Joel Dice
762df17aa7 use Architecture::plan in BranchEvent ctor to determine acceptable types for address 2009-03-05 20:27:59 -07:00
Joel Dice
a0e503ad0a optimize moveRR and fix andC 2009-03-05 20:21:15 -07:00
Joel Dice
75e28e81c9 fix operand ordering in remainderR 2009-03-05 19:35:49 -07:00
Joel Dice
ec610a5521 handle shift counts greater than 31 properly 2009-03-05 19:05:39 -07:00
Joel Dice
16e81bcc07 fix orC 2009-03-05 18:33:00 -07:00
Joel Dice
7d48547f0e fix compareUnsignedCR, which relied on sign extension in cmplwi, which actually does zero extension; fix use of li argument to instruction format I 2009-03-05 18:02:03 -07:00
Joel Dice
3e495b8ca5 use mulhwu and eliminate temporary in 64-bit multiplyRR 2009-03-04 19:50:03 -07:00
Joel Dice
77195713b8 fix xorR regression introduced in last commit 2009-03-04 19:22:47 -07:00
Joel Dice
cca3e72318 fix 64-bit xorC 2009-03-04 19:20:15 -07:00
Joel Dice
acfa1ee2ff fix 64-bit negateRR 2009-03-04 18:59:04 -07:00
Joel Dice
d48e5377fe add missing instruction to multiplyR 2009-03-04 18:43:53 -07:00
Joel Dice
a8da9ecb05 fix use of displacement parameter in instruction format B; use correct opcode in slw instruction 2009-03-04 18:20:54 -07:00
Joel Dice
296c93a04c fix backwards logic in longCompare; correct unsupported use of JumpIfLessOrEqualC in shiftRightR; add multiply, divide, and remainder operations to table 2009-03-04 17:54:47 -07:00
Joel Dice
8cc1f6def8 remove dead code from MyCompiler::call 2009-03-04 17:52:55 -07:00
JET
dbcd42e70c added 64-bit shifts and mul/div 2009-03-04 10:11:42 -07:00
Joel Dice
6e6035505c zero heap space ahead of time when allocating raw storage and garbage collecting, not when allocating individual objects
This helps us support the Java Memory Model without adding a memory
barrier to every object allocation.  It's also potentially more
efficient, since we zero out each heap segment all at once instead of
bit-by-bit with each object allocation.
2009-03-03 20:05:48 -07:00
Joel Dice
8410e1d683 ensure reads and writes of volatile 64-bit fields are atomic 2009-03-03 18:02:11 -07:00
Joel Dice
2ca8132d97 implement support for volatile fields 2009-03-02 20:18:15 -07:00
Joel Dice
8c9d625f8f add memory barriers where appropriate in compile.cpp 2009-03-02 18:40:06 -07:00
Joel Dice
5f0b40e531 restore call to Client::releaseTemporary in moveCM 2009-03-01 23:07:28 +00:00
Joel Dice
6eacf7b804 fix bounds checks in MyCompiler::initLocalsFromLogicalIp 2009-03-01 22:47:07 +00:00
Joel Dice
97961ecdde pick a temporary register which is valid as both a destination and a source for the required moves in maybeMove 2009-03-01 15:41:03 -07:00
Joel Dice
1192ef939e fix stack offset calculation for multianewarray on x86 2009-03-01 15:39:52 -07:00
Joel Dice
7a2bf9b855 fix x86.cpp build 2009-03-01 15:14:51 -07:00
Joel Dice
28d4409b0a implement negateRR 2009-03-01 12:57:07 -07:00
Joel Dice
36196910ed implement xorR and xorC 2009-03-01 12:40:49 -07:00
Joel Dice
97e698d806 fix MyCompiler::peak for big-endian architectures 2009-03-01 12:36:30 -07:00
Joel Dice
696282631a fix endianness issues with 64-bit locals 2009-03-01 12:28:17 -07:00
Joel Dice
412348d938 fix stack offset calulation for multianewarray 2009-03-01 10:49:37 -07:00
Joel Dice
117c89b9ee change == to <= in moveCR2 since we only need to ensure dstSize is no more than the word size 2009-02-28 19:10:31 -07:00
Joel Dice
93ebb571b3 only add site to result if result is live in CombineEvent::compile and TranslateEvent::compile 2009-02-28 19:08:14 -07:00
Joel Dice
5adcfa3341 fix 32-bit indexed loads 2009-02-28 17:31:09 -07:00
Joel Dice
750f4d51da fix extsb/extsh operand order in moveRR 2009-02-28 17:17:12 -07:00
Joel Dice
f01a78699f fix opcode for lbzx 2009-02-28 16:58:54 -07:00
Joel Dice
b0422b32e6 implement orR and orC; add shift operations to ternary operation table 2009-02-28 16:28:10 -07:00
Joel Dice
d6bd2e7308 make Compiler::store take both a source size and a destination size to avoid endianness issues; change order of Compiler::load parameters to match 2009-02-28 16:17:24 -07:00
Joel Dice
10c75f4783 add longCompareC to ternary operation table 2009-02-28 15:04:04 -07:00
Joel Dice
5a8ffcd79b implement moveZRR and moveZMR 2009-02-28 15:00:12 -07:00
Joel Dice
60c4bede39 fix undefined-order-of-operations bug in Frame::dupped 2009-02-28 14:41:05 -07:00
Joel Dice
3e6c30a4b5 always return an 8-byte value (or void) from native functions called from Java
This is important on the 32-bit OS X PowerPC ABI, since the location
of the low 32-bits of a return value change depending on whether the
entire value is 64-bits or not.
2009-02-28 14:20:43 -07:00
Joel Dice
c5dd97ffea ensure that we release temporaries back to the compiler in powerpc.cpp; allow the first operand of a comparison to be a constant 2009-02-28 13:41:37 -07:00
Joel Dice
a2d2564d83 restore changes clobbered by commit 5a08062 2009-02-28 12:58:34 -07:00
Joel Dice
1249b11080 fix build breakage 2009-02-28 12:47:47 -07:00
Joel Dice
46a6744050 Merge commit 'origin/powerpc' into powerpc 2009-02-28 12:44:31 -07:00
Joel Dice
f8d7bea7e8 implement various compare and branch instructions 2009-02-28 12:36:02 -07:00
Joel Dice
f22ce3f996 fix parameter offset calculation in invokeNative2 2009-02-28 12:33:26 -07:00
JET
5a08062190 prelim 64-bit mult and shift support 2009-02-27 16:54:20 -07:00
Joel Dice
8ecd6a0394 fix and optimize andC 2009-02-26 18:56:57 -07:00
Joel Dice
4999c08e32 fix stack offset calculation for powerpc
This may break x86, in which case we'll iterate until they both work.
2009-02-26 18:54:25 -07:00
Joel Dice
73aa499371 clean up offsetToFrameIndex code 2009-02-26 18:53:35 -07:00
Joel Dice
d7d3dd5055 various bugfixes, especially concerning frame allocation and offset calculation 2009-02-25 20:49:42 -07:00
Joel Dice
6957492c7a ignore base argument in powerpc version of vmJump and move thread argument into correct register 2009-02-25 20:47:38 -07:00
Joel Dice
b539d7b1e0 Merge commit 'origin/powerpc' into powerpc
Conflicts:
	src/powerpc.cpp
2009-02-25 18:31:21 -07:00
Joel Dice
08af5deb36 implement andC and moveAR; fix MyArchitecture::nextFrame 2009-02-25 18:16:38 -07:00
Joel Dice
09c96a3063 simplify longCompare in x86.cpp such that the move function pointer parameter is eliminated and moveCR is called directly 2009-02-25 18:13:18 -07:00
Joel Dice
2554673dda call c->arch->plan in CallEvent ctor to ensure the address operand is placed into the proper operand type for the call instruction 2009-02-25 18:11:41 -07:00
J. Treadwell
c148369d57 added multiply and divide instructions and intermediates 2009-02-25 09:37:44 -07:00
Joel Dice
0832c740fc implement a few conditional and branch instructions 2009-02-24 18:29:04 -07:00
Joel Dice
571615a79f fix stack space calculation in compile-powerpc.S 2009-02-24 18:28:05 -07:00
Joel Dice
299f8542b7 rename fooCRR and fooRRR to fooC and fooR, respectively; add entries to ternary operation table in populateTables 2009-02-24 09:13:11 -07:00
Joel Dice
b292cbb7f4 mask displacement in instruction format D; fix MyArchitecture::frameIp to look for return address at an 8-byte offset from the stack pointer 2009-02-24 08:04:55 -07:00
Joel Dice
eef5047a52 various bugfixes in powerpc.cpp 2009-02-23 21:25:15 -07:00
J. Treadwell
ee90d7bd2c merged ppc changes 2009-02-23 20:57:25 -07:00
JET
2d09f57cbd added instructions 2009-02-23 19:16:42 -07:00
Joel Dice
da8520754d progress towards compiling and running simple methods on powerpc 2009-02-23 19:11:32 -07:00
Joel Dice
79a1d0451f fix GCC 4.2 -Os uninitialized variable warning in windows.cpp 2009-02-22 17:44:11 -07:00
Joel Dice
8add9db0b2 fix GCC 4.x aliasing warnings in windows.cpp 2009-02-22 17:04:58 -07:00
Joel Dice
9a9b2c611a sketch of new powerpc.cpp implementation 2009-02-21 12:30:25 -07:00
Joel Dice
a9e85e5de8 fix compare instruction syntax in compile-powerpc.S 2009-02-18 17:46:07 -07:00
Joel Dice
324caaf98b add size parameter to Assembler::returnLow since the register used depends on the return value size on PowerPC 2009-02-17 18:19:31 -07:00
Joel Dice
c88e3fa230 ensure stack alignment in compile-x86.S and update vmInvoke to accept frame size parameter 2009-02-16 19:49:28 -07:00
Joel Dice
17b4c20435 fix windows build 2009-02-16 19:48:29 -07:00
Joel Dice
ba4e2a6582 rename compile.S to compile-x86.S and add compile-powerpc.S 2009-02-16 08:21:12 -07:00
Joel Dice
773e229112 fix powerpc native call bugs 2009-02-15 14:24:20 -07:00
Joel Dice
bec13838c1 Merge branch 'powerpc' of oss.readytalk.com:/var/local/git/avian 2009-02-15 12:34:01 -07:00
Joel Dice
cea5a9315d fix block delimiting code in compile.cpp to avoid cycles and nested blocks 2009-02-15 11:11:00 -07:00
Joel Dice
7803663fc9 fix block delimiting code in compiler.cpp to minimize the number of blocks needed
This exposed bugs in x86.cpp concerning alignment padding which are now
fixed.
2009-02-14 17:52:44 -07:00
Joel Dice
4b2d74f656 fix merge conflict bug preventing the bootimage code from seeing, marking, and fixing jsr addresses 2009-02-14 14:23:23 -07:00
Joel Dice
f58f7b3bdf fix bugs pertaining to tracking reads and and value sites across subroutines (jsr and ret instructions) 2009-02-14 13:26:39 -07:00
Joel Dice
93142bb952 support filtering based on class name, method name, and method spec in
bootimage.cpp

This is useful for debugging the compiler, since it allows you to
compile one method in particular if that's where a bug manifests itself.
2009-02-14 13:23:31 -07:00
U-JOELDICEXPVM\Joel Dice
ec5c64d472 fix Cygwin build 2009-02-13 17:03:46 -07:00
Joel Dice
e3257134c9 fix merge-related regression affecting bootimage build 2009-02-09 19:00:53 -07:00
Joel Dice
9b0d6854ec fix merge conflicts 2009-02-09 16:22:51 -07:00
Joel Dice
a1ec71423e Merge branch 'master' into powerpc
Conflicts:

	makefile
	src/assembler.h
	src/binaryToMacho.cpp
	src/compile.cpp
	src/compiler.cpp
	src/x86.cpp
2009-02-09 16:22:01 -07:00
Joel Dice
a1fc8a4dac add site to result in MemoryEvent::compile regardless of whether the result is live, since the memory location may be used as the target of a move and we need to keep the reference count of the base and index registers nonzero 2009-02-08 19:08:56 -07:00
Joel Dice
29616c4abc freeze target site when using temporary in maybeMove 2009-02-08 18:58:33 -07:00
Joel Dice
4ca45ffa41 fix two bugs concerning tracking available registers and reserving them when necessary 2009-02-08 16:20:28 -07:00
Joel Dice
0fbe89c147 set Value::high when appropriate in MyCompiler::initLocalsFromLogicalIp 2009-02-08 15:13:49 -07:00
Joel Dice
175ec1ff48 remove debug logging 2009-02-08 13:22:28 -07:00
Joel Dice
5066bfdabf tweak register and frame site allocation code to avoid failure in corner cases 2009-02-08 13:21:35 -07:00
Joel Dice
55d2ee1823 avoid clobbering values in sign-extension case of MoveEvent.compile 2009-02-02 19:13:02 -07:00
Joel Dice
123e22322c turn off debug logging 2009-02-01 16:21:55 -07:00
Joel Dice
2e3fd111d4 fix regressions on x86_64 2009-02-01 16:19:11 -07:00
Joel Dice
8b1801c465 various bugfixes involving multiword values 2009-02-01 16:10:56 -07:00
Joel Dice
11408dc2cd fix popIndex calculation in CallEvent ctor 2009-01-31 12:35:45 -07:00
Joel Dice
8b6319fbc8 assume stack grows towards negative addresses when loading and storing multiword locals 2009-01-31 12:05:06 -07:00
Joel Dice
a11d018dc2 fix assertion in MyCompiler::peek 2009-01-29 18:43:46 -07:00
Joel Dice
8dca14af74 remove obsolete assertion from negateRR 2009-01-29 18:43:18 -07:00
Joel Dice
1c3504b62a fix various stack bugs 2009-01-29 18:36:19 -07:00
Joel Dice
565ece136b begin refactoring compiler.cpp to treat each word of a multiword value seperately 2009-01-25 15:03:38 -07:00
Joel Dice
034444db57 fix a couple of bugs handling multi-word values 2009-01-12 09:26:43 -07:00
Joel Dice
582e975a8a remove temporary debug code 2009-01-11 16:46:36 -07:00
Joel Dice
85ac9b9c71 revert overflow code in sitesToString since we now prune dead buddies from values 2009-01-11 16:46:22 -07:00
Joel Dice
05bd86e2ed use upper 32 bits of mask in pickRegisterTarget when picking register for high word; set Target::Impossible to 5 since 4 is a valid cost 2009-01-11 16:42:41 -07:00
Joel Dice
04bc58fd95 reorder code in MemorySite::release so we can use low->size before it is overwritten 2009-01-11 16:24:25 -07:00
Joel Dice
5a76277b84 remove dead buddies from values so they don't accumulate without bound; when resolving sites, avoid picking those which belong to other values; various bugfixes 2009-01-11 15:53:51 -07:00
Joel Dice
e3976e66d3 avoid using all registers when marshalling sites, since we need at least one register free for memory-to-memory moves; various bugfixes 2009-01-11 11:48:02 -07:00
Joel Dice
54ad7c4e98 tolerate ConstantValue attributes on non-static fields, since the compiler ensures that they are initialized in any constructors for that class (i.e., the VM does not need to do anything special to initialize them) 2009-01-10 12:25:52 -07:00
Joel Dice
8459489212 avoid overflow in sitesToString 2009-01-04 15:58:05 -07:00
Joel Dice
9495d03dc6 explicitly load jump target in tableswitch to avoid retaining stale memory sites 2009-01-04 15:56:47 -07:00
Joel Dice
c56f37197c marshal values at branches to avoid duplication of effort at junctions 2009-01-04 14:52:46 -07:00
Joel Dice
f4689093ee try harder to find an acceptable source site in resolveSourceJunctionSites 2009-01-04 13:35:09 -07:00
Joel Dice
ce1e161f52 allocate larger buffer for sitesToString 2009-01-04 12:38:31 -07:00
Joel Dice
095e6d7bc3 prefer unowned resources in resourceCost 2009-01-04 12:34:38 -07:00
Joel Dice
d76b4121ae fix 64-bit constant case in addCR and subtractCR 2009-01-04 12:32:11 -07:00
Joel Dice
ded2ffe437 more compile.cpp refactoring 2009-01-03 18:17:51 -07:00
Joel Dice
ae24a6c18e continue refactoring compiler.cpp to simplify register and frame resource allocation 2009-01-03 14:34:45 -07:00
Joel Dice
7b546936d6 snapshot 2009-01-02 17:44:47 -07:00
Joel Dice
c678fb30a4 snapshot 2008-12-24 13:35:43 -07:00
Joel Dice
f96ee3ea73 handle p->value->reads == 0 case in visit 2008-12-22 18:25:00 -07:00
Joel Dice
897586aa76 clobber overlapping locals in storeLocal; move fallback code in trySteal to increase its applicability 2008-12-22 17:55:29 -07:00
Joel Dice
ac37941fa5 fix build error in previous commit 2008-12-21 18:14:24 -07:00
Joel Dice
c9bec0ce96 only steal sites recursively when all else fails in trySteal 2008-12-21 18:14:20 -07:00
Joel Dice
c78e76c747 temporarily reacquire source in releaseRegister
This avoids a SEGV when freezing the register.
2008-12-21 14:48:26 -07:00
Joel Dice
055ec4dd9f various fixes and cleanups concerning 64-bit values on 32-bit systems 2008-12-21 14:41:56 -07:00
Joel Dice
b23f7374e9 don't steal sites in pickJunctionSite 2008-12-20 17:45:52 -07:00
Joel Dice
b9b7ae4003 avoid clobbering first operand in CombineEvent.compile 2008-12-20 16:05:01 -07:00
Joel Dice
cf4e8e7ec2 various fixes for marshalling values among registers and frame sites 2008-12-20 14:55:45 -07:00
Joel Dice
75b3bf98ab pick only unfrozen frame sites in save 2008-12-20 11:13:58 -07:00
Joel Dice
bd89b8e00a check for null array in HashMapIterator::find 2008-12-18 20:23:08 -07:00
Joel Dice
2622773eb4 support bootimage build on OS X 2008-12-18 19:52:03 -07:00
Joel Dice
e55b59905e Merge branch 'master' of oss.readytalk.com:/var/local/git/avian 2008-12-18 16:32:23 -07:00
Joel Dice
5e727c8c5d throw an error if a volatile field is encountered, since we don't yet support them properly 2008-12-18 16:32:18 -07:00
Joel Dice
7ce35b212f fix GCC 4.0.1 uninitialized value warning 2008-12-18 10:10:19 -07:00
Joel Dice
a40ae85588 clear sites from dead value in removeBuddy 2008-12-15 18:21:01 -07:00
Joel Dice
8819d01522 only set Context::forfeitedSite if value is live 2008-12-15 17:42:32 -07:00
Joel Dice
39358e6652 update junction read based on liveness of local value on first visit to junction, not stub read value 2008-12-15 07:35:19 -07:00
Joel Dice
7f4bd51464 don't use trySteal when moving sites between buddies 2008-12-13 13:54:26 -07:00
Joel Dice
4717e94fa3 remove value buddies after setting sites to junction sites, not after populating junction sites
This mirrors how snapshots are captured and restored for branch events.
Also, switch back to resolving junction sites before capturing fork
snapshots so we capture the true state of each value immediately before
the branch.
2008-12-13 12:59:02 -07:00
Joel Dice
d50febe088 various control-flow related bugfixes 2008-12-11 18:09:36 -07:00
Joel Dice
8b2a6f85fc remove divideCR and remainderCR
This forces the compiler to explicitly move the constant operand into
a register, avoiding the possibility that AX or DX might be unavailable
when the assembler needs them.
2008-12-11 18:08:16 -07:00
Joel Dice
aa7b47eec4 fix merge confict fallout in heapdump.cpp 2008-12-04 14:35:25 -07:00
Joel Dice
7d68c9b0a5 Merge branch 'bootimage' of oss.readytalk.com:/var/local/git/avian
Conflicts:

	src/heapdump.cpp
2008-12-04 14:29:17 -07:00
Joel Dice
58a90f2b84 fix regressions for non-bootimage case 2008-12-03 19:09:57 -07:00
Joel Dice
93d4fbc43d fix platform=windows and process=interpret builds 2008-12-03 08:44:07 -07:00
Joel Dice
457c3d135e return Tenured from MyHeap::status if the object resides in the immortal heap 2008-12-02 19:41:22 -07:00
Joel Dice
4098368cb9 fix non-debug build of compile.cpp 2008-12-02 19:39:56 -07:00
Joel Dice
851efc8d10 handle case of unresolved promise in compareCR and compareCM 2008-12-02 19:39:09 -07:00
Joel Dice
bcfdc03631 fix build breakage in heapdump.cpp 2008-12-02 19:38:32 -07:00
Joel Dice
d4363d250a mark and fix up absolute addresses in boot image code 2008-12-02 09:45:20 -07:00
Joel Dice
25ade1484a lots of bugfixes and refactoring 2008-12-01 19:38:00 -07:00
Rich Scott
f13bf44e87 Check return value of fwrite() calls.
This is to satisfy GCC 4.3.2 (on Ubuntu 8.10), which requires it.
2008-12-01 16:53:34 -07:00
Joel Dice
eaf30eb909 fix static class initialization when using a boot image 2008-11-29 21:58:09 -07:00
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
0ef2ee1d02 refactor Segment::Map to support map data which is not allocated as part of the segment data 2008-11-29 13:37:03 -07:00
Joel Dice
702525fd32 support immortal heap area in heap.cpp 2008-11-28 19:31:06 -07:00
Joel Dice
b8056d905c fix bugs in allocating and populating method object pools 2008-11-28 18:23:01 -07:00
Joel Dice
80815d35f7 fix fixed object tracking in heap.cpp 2008-11-28 18:22:09 -07:00
Joel Dice
4d1af63ed2 initial work on booting from boot image 2008-11-28 15:02:45 -07:00
Joel Dice
d22a9ab270 visit constants in visitRoots so they are included in the final heap image 2008-11-28 11:33:11 -07:00
Joel Dice
02afbd1fa1 handle unresolved constants in moveCM 2008-11-27 21:58:32 -07:00
Joel Dice
6dc181fad5 move allocation zone from makeCodeImage to writeBootImage so it stays in scope until after updateConstants is called 2008-11-27 21:58:04 -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
264779ed2a copy site if necessary to avoid chaining to another site in resolveJunctionSite 2008-11-25 19:23:47 -07:00
Joel Dice
f9145528c8 do constant-to-memory movq in one instruction on amd64 when possible 2008-11-25 19:22:21 -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
58a9718d82 clean stack sites more aggressively after function calls to avoid GC bugs 2008-11-25 16:00:40 -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
207f093464 never trigger a GC due to an immortal allocation 2008-11-23 11:48:39 -07:00
Joel Dice
fb9b2bf173 avoid creating garbage when iterating over hashmaps 2008-11-22 16:38:41 -07:00
Joel Dice
4392b04fd0 avoid creating unecessary garbage in treeInsertNode and friends 2008-11-22 16:25:35 -07:00
Joel Dice
6162dfafbb increase heap pool size and fixed footprint threshold constants based on performance profiling and experimentation (second try) 2008-11-22 14:48:10 -07:00
Joel Dice
8a7852172e increase heap pool size and fixed footprint threshold constants based on performance profiling and experimentation 2008-11-22 14:47:18 -07:00
Joel Dice
2e2925c321 fix backwards logic in treeMapInsert which prevented correct balancing 2008-11-22 14:14:52 -07:00
Joel Dice
6500f1eff6 initial work to support boot image creation and use 2008-11-21 16:20:35 -07:00
Joel Dice
e98da8440e minor tweak to find function in heapdump.cpp to return 0 where we were returning false (which amounts to the same thing but is less confusing) 2008-11-19 18:09:02 -07:00
Joel Dice
3d9e508e3e fix regression in last commit 2008-11-17 08:44:35 -07:00
Joel Dice
9aee242408 Merge branch 'powerpc' of oss:/var/local/git/avian into powerpc
Conflicts:

	src/compiler.cpp
2008-11-17 08:22:07 -07:00
Joel Dice
7ea5a4a64f avoid inifinite recursion in trySteal 2008-11-17 08:20:48 -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
fae0ccfe96 fix unused parameter warnings 2008-11-11 18:09:45 -07:00
Joel Dice
6f5613ebd9 minor code cleanup in MoveEvent::compile 2008-11-11 17:48:21 -07:00
Joel Dice
191bfb6141 fix 4-to-8 byte sign extensions for ia32 and clean up MoveEvent; all tests now pass on ia32 2008-11-11 17:39:26 -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
e859502811 handle unresolved constants in moveCM 2008-11-11 11:56:43 -07:00
Joel Dice
671fd1c0f9 set popIndex for stack arguments in CallEvent constructor 2008-11-11 11:56:23 -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
2304a656cf in releaseRegister, if the register is not the exclusive site of a value, steal it 2008-11-10 21:25:36 -07:00
Joel Dice
54cda3ca61 specify register contraints for Negate instruction in MyArchitecture::plan 2008-11-10 20:23:33 -07:00
Joel Dice
96a7c71c30 fix loading 8-byte values on 32-bit systems 2008-11-10 19:12:36 -07:00
Joel Dice
81d532c4f0 handle overlap cases in moveRR 2008-11-10 19:11:32 -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
decd24965a implement multiplyCR and divideCR 2008-11-08 15:42:26 -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
3e81405a33 snapshot 2008-11-01 16:16:18 -06:00
Joel Dice
dd4dc18916 snapshot 2008-11-01 13:14:13 -06:00
Joel Dice
6f1d02dae7 remove the libstdc++ dependency once and for all
The trick is to make all destructors non-virtual.  This is safe because
we never use the delete operator, which is the only case where virtual
destructors are relevant.  This is a better solution than implementing
our own delete operator, because we want libraries loaded at runtime to
use the libstdc++ version, not ours.
2008-10-28 15:40:50 -06:00
Joel Dice
88a1faa2a2 set global system pointer to null in MySystem::dispose in windows.cpp 2008-10-28 12:15:27 -06:00
Joel Dice
01cc868797 remove debug code from builtin.cpp 2008-10-27 15:39:14 -06:00
Joel Dice
4d613f404f use dbghelp.dll to generate crash dump file on Windows XP and later
The dump is written to the directory specified via the avian.crash.dir
system property if that property is set and is not written otherwise.
2008-10-27 15:13:27 -06:00
Joel Dice
d20ee74d79 fix stack frame offset calculations for 64-bit values; insert dummy events for instructions which start with stack activity 2008-10-24 20:12:02 -06:00
Joel Dice
003afdc918 fix heap dump facility to visit all roots 2008-10-24 18:48:10 -06:00
Joel Dice
3b67417695 heap dump bugfixes 2008-10-22 18:05:34 -06:00
Joel Dice
d25a6098e6 remove support for hiding constructors and accessors in type-generator.cpp
This feature is not being used, and it may be the cause of this bug:

  http://groups.google.com/group/avian/browse_thread/thread/955aa1479e9fddca
2008-10-22 08:39:27 -06:00
Joel Dice
e2f3e3da77 enter active state at start of Java_java_lang_Runtime_dumpHeap 2008-10-21 17:49:32 -06:00
Joel Dice
0459a7701c enter exclusive state before dumping heap 2008-10-21 17:47:38 -06:00
Joel Dice
6a5116e7a7 implement primitive heap dump facility for memory profiling, accessible via Runtime.dumpHeap
The proper way to do this is to implement a subset of JVMTI, but this
will do the job for now.
2008-10-21 17:38:20 -06:00
Joel Dice
7d6ca28b2f snapshot 2008-10-18 18:15:57 -06:00
Joel Dice
26614e2182 use same code to spill registers and stack frame slots 2008-10-16 18:10:35 -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
f38a55cbb2 make linking against libstdc++ the default, overrideable via use-libstdcpp make parameter 2008-10-13 16:31:59 -06:00
Joel Dice
3c798f5bd7 various bugfixes concerning control flow boundaries 2008-10-11 18:23:08 -06:00
Joel Dice
5c04c19e29 look for %s@%d format symbols when resolving native methods on Windows, which obviates the need for -k flag to dlltool 2008-10-10 17:37:36 -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
adb63778f0 fix stack and local snapshots for DummyEvents 2008-10-04 18:14:43 -06:00
Joel Dice
d54ee9081b return null for null argument to MyArchitecture::frameIp 2008-10-04 18:12:29 -06:00
Joel Dice
83aa342bc8 hello, world on amd64 2008-10-04 11:26:35 -06:00
dain
c9e0aa824d Initialized variables to appease gcc 4.2 2008-10-02 13:20:30 -06:00
Joel Dice
07daa9be51 free properties array in Machine::dispose 2008-09-30 17:03:13 -06:00
Joel Dice
df75153a85 handle case of null Stack::pushEvent in CallEvent ctor 2008-09-30 11:22:46 -06:00
Joel Dice
89cc5aa546 initialize JarElement::region in constructor 2008-09-29 18:04:47 -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
c699725cf8 avoid running out of registers when picking junction sites 2008-09-27 16:01:39 -06:00
Joel Dice
965b83303f implement additional instructions 2008-09-27 16:00:58 -06:00
Joel Dice
1910e1b837 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian 2008-09-26 18:17:41 -06:00
Joel Dice
ac988f7a0d fix static field lookup from interfaces 2008-09-26 18:17:13 -06:00
J. Treadwell
27e8bd1406 Temporary StringBuilder fix 2008-09-26 11:31:47 -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
86bec5e3b7 sketch out handling of reads at control flow blocks with multiple predecessors 2008-09-21 18:58:54 -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
fadb66044b remove unused instructions from x86.cpp 2008-09-16 07:59:34 -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
44ccd2b09e write alignment padding to output buffer in MyAssembler::writeTo 2008-09-13 15:07:39 -06:00
Joel Dice
392a1417e5 lots of bugfixes and a few instructions added 2008-09-08 18:31:19 -06:00
Joel Dice
1dd25325c8 implement various instructions, including AlignedCall 2008-09-07 20:21:52 -06:00
Joel Dice
dcdf78dc44 fix localOffset calculation 2008-09-07 20:21:11 -06:00
Joel Dice
af9758a6d3 got a simple arithmetic test working 2008-09-07 14:12:11 -06:00
Joel Dice
9971eaa92a support out-of-order compilation in x86 assembler 2008-09-06 19:37:12 -06:00
Joel Dice
ed806ca740 working towards compiling simple methods 2008-09-06 15:25:41 -06:00
Joel Dice
e13b755048 more progress towards new JIT code - this compiles but won't run properly 2008-09-05 09:00:38 -06:00
Joel Dice
5f7d68b404 snapshot 2008-08-30 14:12:27 -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
e46e222f38 wait for other threads to exit in DestroyJavaVM 2008-08-13 15:39:48 -06:00
Joel Dice
297e8f09ec don't calculate the index in hashMapInsert until it's needed 2008-08-11 16:44:38 -06:00
Joel Dice
5f4d86a703 avoid potential corruption in hashMapInsert due to table-resize-on-GC 2008-08-11 15:20:12 -06:00
Joel Dice
22a5707966 remove obsolete code from postVisit; upgrade assert to expect for debugging 2008-08-11 15:16:55 -06:00
Joel Dice
6ee2b0280e implement compareAM 2008-07-31 07:53:43 -06:00
Joel Dice
4299063be9 Merge branch 'master' of oss:/var/local/git/avian into powerpc 2008-07-23 17:58:36 -06:00
Joel Dice
29df431df5 snapshot 2008-07-23 17:58:29 -06:00
Joel Dice
c6071569bf Merge branch 'powerpc' of oss:/var/local/git/avian into powerpc 2008-07-23 17:58:03 -06:00
Joel Dice
522e2ebc9f fix bug in debug helper function 2008-07-21 14:41:29 -06:00
Joel Dice
6e3bbd3c5f Merge branch 'master' of oss:/var/local/git/avian into powerpc 2008-07-17 17:34:52 -06:00
Joel Dice
f0c9deaa06 snapshot 2008-07-17 17:34:38 -06:00
Eric Scharff
13a535d1c6 Added a getContentLength() method to URLConnection
This is particularly important if you want to get the number of bytes of a
resource loaded by the class loader:
  getClass().getResource("myFile").openConnection().getContentLength()
2008-07-15 09:36:52 -06:00
Joel Dice
a2ba391b89 support -Xbootclasspath and -Xbootclasspath/a options 2008-07-14 11:51:20 -06:00
Joel Dice
cfaf690306 update usage message (part 2) 2008-07-14 11:23:33 -06:00
Joel Dice
d20fc697cb update usage message 2008-07-14 11:21:59 -06:00
Joel Dice
a6853fa820 rename -Xbootclasspath option to -Xbootclasspath/p to match Sun syntax and semantics 2008-07-14 11:16:34 -06:00
Joel Dice
920034e231 use JavaVMInitArgs instead of JDK1_1InitArgs in JNI_CreateJavaVM; support -Xbootclasspath option 2008-07-14 11:02:43 -06:00
Zsombor
0e539615e7 add Thread.name field 2008-07-13 18:21:04 -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
623b5f84dc fix GC-in-hashMapResize bug which occasionally resulted in corrupt Machine::monitorMap 2008-07-12 10:38:09 -06:00
Joel Dice
9c82bd2386 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian 2008-07-11 22:01:57 -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
149949a2d2 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian 2008-07-11 19:26:53 -06:00
Joel Dice
fa3ceb0a75 add assertions to hashMapResize and hashMapRemove to help debug rare infinite loop 2008-07-11 19:26:46 -06:00
Joel Dice
5a97caa4ca fix recently-introduced GC safety bug 2008-07-11 19:24:37 -06:00
Joel Dice
e31f795661 include Thread::backupHeapIndex in heap footprint calculation 2008-07-11 19:21:53 -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
107ac01304 fix addCR and subtractCR for cases of 64-bit constants on amd64 2008-07-02 08:52:35 -06:00
Joel Dice
0f94bea5a6 fix stress test breakage when throwing ArrayIndexOutOfBoundsExceptions 2008-06-27 09:09:14 -06:00
J. Treadwell
ee8f5a8cd8 First powerpc.cpp with actual ppc assembling (incomplete)! 2008-06-25 17:35:01 -06:00
Joel Dice
9bea21dec7 add copyright header to files which don't already have them 2008-06-25 14:53:48 -06:00
Joel Dice
61e65098df use virtual dispatch when calling Thread.run from VM 2008-06-25 10:28:11 -06:00
Joel Dice
8512d6c74c Merge branch 'master' of oss:/var/local/git/avian into powerpc 2008-06-23 17:38:16 -06:00
Joel Dice
3d84f31c13 fix longCompareCR on 64-bit systems 2008-06-17 09:32:46 -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
04724b657d hello, world! 2008-06-15 14:17:52 -06:00
dicej
fb6624b9ae add cfm_vectors to JNIEnvVTable to match jni.h on OSX 2008-06-15 12:51:04 -06:00
dicej
32f4feb4aa use LOCAL macro to mark local symbols in *.S 2008-06-15 12:49:37 -06:00
dicej
a9ae50900a define LinkageArea in powerpc.h and add the latter to makefile 2008-06-15 12:48:53 -06:00
dicej
b1750c0c9a fix powerpc.S syntax errors 2008-06-15 12:28:48 -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
b683d836c3 implement longCompareRR 2008-06-12 11:23:20 -06:00
Joel Dice
6f5cc9f45f fix unused parameter warning 2008-06-12 11:09:53 -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
357acbdb0f implement move4To8CR, which just defers to moveCR 2008-06-11 08:59:05 -06:00
Joel Dice
94f7efc160 ignore contents of stack location in popNow if the value already resides elsewhere besides the stack 2008-06-11 08:47:06 -06:00
Joel Dice
633ef83fa1 fix handling of values which appear more than once on the stack in trySteal 2008-06-10 18:48:46 -06:00
Joel Dice
b80a3cea85 handle constant comparisons (sometimes generated by ProGuard) in compiler 2008-06-10 18:17:44 -06:00
Joel Dice
dc136bb751 fix stack tracking weirdness for jsr instruction 2008-06-10 18:16:02 -06:00
Joel Dice
5b2065e76c only elide constant multiply if constant is one, not zero (duh) 2008-06-10 18:14:15 -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
Joel Dice
4b67adaa0a sketch vmNativeCall implementation for powerpc 2008-06-08 13:47:37 -06:00
Joel Dice
ca6215c720 start fleshing out powerpc.S 2008-06-06 08:55:16 -06:00
dicej
f375f6e85c enable powerpc build for process=interpret (won't run yet, though) 2008-06-04 17:09:09 -06:00
dicej
9e0f0a17a7 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian into powerpc 2008-06-04 16:22:46 -06:00
dicej
0ccf8d57ea rough sketch of powerpc support 2008-06-04 16:21:27 -06:00
Joel Dice
ec791a90de fix process=interpret build 2008-06-04 16:17:06 -06:00
Eric Scharff
2aadbaac38 Force alignment for native calls 2008-06-02 11:43:58 -06:00
Eric Scharff
33306aa2f5 Fix warning on confused Mac OS X gcc 4.0 2008-06-02 10:12:09 -06:00
Joel Dice
3b0e05b739 fix unused parameter warning 2008-06-02 08:13:20 -06:00
Joel Dice
ecfb853f17 use relative branches where possible on amd64 2008-06-02 07:49:09 -06:00
Joel Dice
2f3e1ea393 fix incorrect debug logging message 2008-05-31 19:40:18 -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
e68a18248c use codePromise helper function in CallEvent ctor 2008-05-31 16:24:04 -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
51256f3cc2 fix moveCM for 64-bit constants on 64-bit machines 2008-05-22 18:16:44 -06:00
Joel Dice
f05318b787 fix thinkos in d2i and friends 2008-05-22 18:08:41 -06:00
Joel Dice
3326aafdac various 32-bit fixes 2008-05-22 11:15:18 -06:00
Joel Dice
21cb1c3c8f remove Event::validate, since it is no longer needed and actually causes trouble 2008-05-20 16:47:53 -06:00
Joel Dice
36dbf1ad14 fix another local variable caching bug 2008-05-20 15:24:10 -06:00
Joel Dice
d604efd8f5 fix local variable caching bug 2008-05-20 13:11:42 -06:00
Joel Dice
651c4559db implement compareAR 2008-05-19 10:39:05 -06:00
Joel Dice
983e64c86a preserve old value of local variable *before* it is overwritten 2008-05-19 10:14:54 -06:00
Joel Dice
83da1ec205 preserve old value of local variable across store if it will be used later; tweak site ownership transfer in MoveEvent.compile 2008-05-19 08:53:40 -06:00
Joel Dice
292f84a3fa fix thinko in laload implementation 2008-05-19 08:50:37 -06:00
Joel Dice
08a1921eb7 only set target equal to src->source in MoveEvent.compile if it is a simple load or store 2008-05-19 07:44:39 -06:00
Joel Dice
ad6153612b disallow memory,constant comparisons on x86 2008-05-19 07:43:37 -06:00
Joel Dice
b52cefa86e disallow memory operands in 32-bit comparisons on amd64 2008-05-19 07:27:05 -06:00
Joel Dice
3c30e815ec optimize multiple loads from the same local variable 2008-05-18 22:31:52 -06:00
Joel Dice
56d8851764 constrain temporary register in moveMM according to moveMR's requirements 2008-05-18 22:28:47 -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
4858972dbc support 64-bit subtracts on 32-bit systems; allow constant shift counts in MyAssembler::plan 2008-05-18 09:43:31 -06:00
Joel Dice
392132cb0e Merge branch 'compiler' of la.merseine.nu:p/avian-compiler into compiler 2008-05-17 21:34:46 -06:00
Joel Dice
b6b84af123 various bugfixes 2008-05-17 21:32:14 -06:00
Joel Dice
2bb310981d clean up MoveEvent.compile 2008-05-17 19:26:36 -06:00
Joel Dice
15c2eb13f2 don't generate code for a move from a register to itself 2008-05-17 18:13:27 -06:00
Joel Dice
85a772b0a7 add read of size 4 in CombineEvent for first operand of shift operation 2008-05-16 10:18:36 -06:00
Joel Dice
790e2fee42 respect constraints specified by Assembler::plan in MoveEvent::compile 2008-05-16 10:01:24 -06:00
Joel Dice
21c5eb2d9e fix thinko in appendCombine 2008-05-15 18:35:17 -06:00
Joel Dice
d7fc4aa438 fix offset computation in compareCR and compareCM 2008-05-15 18:34:48 -06:00
Joel Dice
7f72a6469d more register marshalling bugfixes; simple swt apps now run on amd64 2008-05-15 17:19:23 -06:00
Joel Dice
bbd1ee5540 various register marshalling bugfixes 2008-05-15 14:00:57 -06:00
Joel Dice
2ed6247cec fix freezing and thawing of read sites where the same value is read multiple times in compile() 2008-05-15 08:29:19 -06:00
Joel Dice
505d6df7ae reorder code in CallEvent ctor to ensure we don't clobber argument registers when it comes time to marshal values for reading 2008-05-14 18:04:25 -06:00
Joel Dice
8434abaa0e implement swapRR 2008-05-14 17:33:55 -06:00
Joel Dice
04f4ad4f58 fix variadic argument passing bug on amd64 2008-05-14 17:22:44 -06:00
Joel Dice
73b8cc5595 fix unused variable warnings 2008-05-14 17:19:41 -06:00
Joel Dice
482065f91a fix code ordering bug in popNow() 2008-05-14 16:36:22 -06:00
Joel Dice
13d6ab023f implement addCM 2008-05-13 11:28:19 -06:00
Joel Dice
08beaad1b6 various bugfixes related to new register allocation code 2008-05-13 11:27:57 -06:00
Joel Dice
a40635fdba rework register allocation to be more flexible 2008-05-12 07:54:47 -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
7dcd109567 assert thread is in exclusive or exit state in removeMonitor 2008-05-05 07:07:59 -06:00
Joel Dice
ebb498587f enter exclusive state in collect function instead of requiring caller to enter that state before calling 2008-05-05 07:04:53 -06:00
Joel Dice
efb30b2256 progress towards more flexible register allocation in compiler 2008-05-04 14:55:34 -06:00
Joel Dice
2e108861da remove operand marshalling from the assembler in favor of doing it in the compiler 2008-05-04 13:09:12 -06:00
Joel Dice
7b809efd3f fix shift bugs 2008-04-30 12:44:27 -06:00
Joel Dice
bf08cc4c53 fix array bounds checks 2008-04-30 11:47:25 -06:00
Joel Dice
918193fa60 fix 32-bit right unsigned shifts on amd64 2008-04-30 11:15:21 -06:00
Joel Dice
844841937f fix use of wrong constant in x86.cpp 2008-04-30 10:46:46 -06:00
Joel Dice
2226627e53 fix incorrect comment 2008-04-30 10:43:33 -06:00
Joel Dice
e2b24263a2 various bugfixes 2008-04-30 09:44:17 -06:00
Joel Dice
3909e3f032 fix thinko concerning stack resets in compile() 2008-04-29 17:18:28 -06:00
Joel Dice
7640590153 implement orCR and compareRC 2008-04-29 17:16:53 -06:00
Joel Dice
59f92b6208 support 64-bit multiplies on 32-bit systems 2008-04-29 16:11:17 -06:00
Joel Dice
4c2d44099b support more 64-bit operations on 32-bit systems 2008-04-29 14:24:52 -06:00
Joel Dice
3fa3fd0796 fix stack index calculation when pushing operands 2008-04-29 14:24:08 -06:00
Joel Dice
4652b7aea0 enable 64-bit various operations on 32-bit systems 2008-04-29 10:56:29 -06:00
Joel Dice
9dafe37ff3 fix code ordering bug in MyCompiler::peek 2008-04-29 10:55:56 -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
22382a5c8b fix amd64 regression in PushEvent::skipMove 2008-04-29 09:30:41 -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
7791b1df80 support 64-bit operands on 32-bit systems in compareCR 2008-04-29 08:57:24 -06:00
Joel Dice
a07a189ddb fix various register marshalling bugs 2008-04-28 18:58:02 -06:00
Joel Dice
8738bddcb9 bugfixes, mainly concerning 32-bit machines 2008-04-28 16:08:31 -06:00
Joel Dice
90ae9a70ee fix encoding reg-to-reg moves of one and two byte sizes 2008-04-28 10:52:54 -06:00
Joel Dice
1b5f14d847 re-enable tests in Misc and get them working 2008-04-28 09:53:48 -06:00
Joel Dice
5e45475f36 fix unused parameter warnings 2008-04-27 16:43:15 -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
505e0bd7db treat 4-byte reg-to-reg moves as 8-byte moves on amd64 since the intention is to copy integer values verbatim; all tests now pass on amd64 2008-04-27 16:25:17 -06:00
Joel Dice
8be4cf8fa6 fix pushState and popState to work as intended 2008-04-27 15:58:29 -06:00
Joel Dice
cc64668657 add support for more instructions to assembler 2008-04-27 14:42:57 -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
fdfeabbb37 Merge branch 'master' of oss.readytalk.com:/var/local/git/avian 2008-04-24 16:13:03 -06:00
Joel Dice
0655b55378 resolve catch type for each exception handler during compilation 2008-04-24 16:06:36 -06:00
Eric Scharff
584e1005e3 Fix Mac compiler warnings for fprintf format strings 2008-04-24 11:07:20 -06:00
Joel Dice
18d25468fe optimize common case of setting a single object field so we don't acquire the heap lock unnecessarily 2008-04-23 18:08:24 -06:00
Joel Dice
1d7b00baff backport getstatic/putstatic optimization from compiler branch 2008-04-23 16:56:02 -06:00
Joel Dice
f49174da28 set the base pointer in vmNativeCall to point to the return address per convention, allowing us to safely walk the stack in Process::getStackTrace 2008-04-23 15:07:14 -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
864e079aca don't bother defining ArrayElementSizeOf<type> if it has no array elements 2008-04-21 16:32:33 -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
571bffde09 fix some issues with 64-bit moves on 32-bit machines 2008-04-20 20:50:46 -06:00
Joel Dice
6b4cafd962 fix argument marshalling on amd64 2008-04-20 18:21:48 -06:00
Joel Dice
2289d13cbb make debug logging more concise 2008-04-20 18:20:38 -06:00
Joel Dice
a259beccdc implement xorRR, remove unused Assembler::stackSyncRegister 2008-04-20 16:19:11 -06:00
Joel Dice
9976c1132c fix instruction callR 2008-04-20 14:43:28 -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
281bdb1fab avoid inserting redundant stack sync events 2008-04-19 20:05:17 -06:00
Joel Dice
ddada5551d fix argument order bug in moveZRR 2008-04-19 20:04:15 -06:00
Joel Dice
fb06f7634c fix thinko in MyCompiler::pushed 2008-04-19 19:08:26 -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
8fd1290d02 various data flow bugfixes 2008-04-18 12:36:57 -06:00
Joel Dice
a053a228f0 optimize move,op sequences where op doesn't care where its source operand comes from 2008-04-18 11:30:54 -06:00
Joel Dice
c1ba7a7d58 optimize op,move sequences where op can place its result directly into the move's destination 2008-04-18 11:00:55 -06:00
Joel Dice
44b3a7c36d various bugfixes 2008-04-17 22:16:20 -06:00
Joel Dice
329009ae97 bugfixes involving stack operations 2008-04-17 21:47:42 -06:00
Joel Dice
af2c2e019c various bugfixes 2008-04-17 18:39:41 -06:00
Joel Dice
a7134a2cd7 fix build 2008-04-17 16:07:32 -06:00
Joel Dice
4d5a57671a Merge branch 'master' into compiler 2008-04-17 14:52:23 -06:00
Joel Dice
f8a5d02f67 more compiler work 2008-04-17 14:48:26 -06:00
Joel Dice
3f45d39582 more compiler work 2008-04-16 20:55:38 -06:00
Joel Dice
f85510c4c4 more work on design sketch of new compiler 2008-04-16 14:58:21 -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
95e5f8203c enter active state before generating stack trace in Thread.getTrace 2008-04-15 23:27:42 -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
b7ea937708 rough sketch of refined compiler design 2008-04-13 12:54:50 -06:00
Joel Dice
bd8d1c05d0 commit and reserve pages when calling VirtualAlloc on Windows 2008-04-13 12:25:24 -06:00
Joel Dice
0d3e6b7793 simplify memory allocation interfaces 2008-04-13 12:15:04 -06:00
Joel Dice
d77ffa8e21 convert relative calls to absolute indirect calls on x86_64, in case we need to jump further than a 32-bit displacement will allow 2008-04-13 11:16:27 -06:00
Joel Dice
85712d183b fix stack walking from native methods 2008-04-11 18:06:04 -06:00
Joel Dice
31e5e4c286 fix GC safety bugs in leftRotate and rightRotate 2008-04-11 18:05:03 -06:00
Joel Dice
7eef2e7918 fix GC safety bug in cloneTreeNode 2008-04-11 17:40:36 -06:00
Joel Dice
33b32398c2 fix code ordering bug in finder.cpp 2008-04-11 17:37:56 -06:00
Joel Dice
aa9cb5c086 fix windows build 2008-04-11 17:01:17 -06:00
Joel Dice
d9ec8e20bf implement Thread.getStackTrace, activeCount, and enumerate 2008-04-11 16:48:39 -06:00
Joel Dice
04c3abc967 fix broken thread tree traversal in machine.cpp 2008-04-11 16:48:05 -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
ebffc5852c various search tree fixes 2008-04-07 18:14:59 -06:00
Joel Dice
3fb90fdaa4 limit scope of lock acquisition in compileMethod2 2008-04-07 18:03:58 -06:00
Joel Dice
2dba75d7f2 fix reversed logic in treeNodeRed 2008-04-07 18:03:16 -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
3915371897 Merge branch 'master' of oss:/var/local/git/avian into dynamic 2008-04-02 06:58:19 -06:00
Joel Dice
6379f50d35 fix thinko in stringChars 2008-04-02 06:57:25 -06:00
Joel Dice
0aebe334b3 Merge branch 'master' of oss:/var/local/git/avian into dynamic 2008-04-01 17:25:18 -06:00
Joel Dice
08b401f337 implement GetStringLength, GetStringChars, and ReleaseStringChars 2008-04-01 17:24:43 -06:00
Joel Dice
d5b0cbb543 Merge branch 'master' of oss:/var/local/git/avian into dynamic 2008-04-01 16:49:28 -06:00
Joel Dice
95a386f2a6 handle null values in IsSameObject 2008-04-01 16:40:53 -06:00
Joel Dice
b12226e878 make private copy of libraryName in BuiltinElement 2008-04-01 16:36:00 -06:00
Joel Dice
1c49b3bc1b Merge branch 'master' of oss:/var/local/git/avian into dynamic 2008-04-01 11:38:15 -06:00
Joel Dice
4102c97be3 fix bugs wrt calling methods via JNI 2008-04-01 11:37:59 -06:00
Joel Dice
907382bcee fix broken field alignment in parseFieldTable which caused longs to overlap other fields on 32-bit systems in certain cases 2008-03-31 18:34:57 -06:00
Joel Dice
74295bb707 interpret avian.bootstrap property as a complete file name 2008-03-31 12:57:49 -06:00
Joel Dice
9bcc4dd4ed fix build for OSX 10.4 and below 2008-03-31 11:58:40 -06:00
Joel Dice
c37f0dcf18 fix darwin build 2008-03-30 22:23:51 -06:00
Joel Dice
357bd29460 support building Avian as a self-contained dynamic library 2008-03-30 21:43:43 -06:00
Joel Dice
9cb21a29a6 fix handling of interface vtables for abstract classes 2008-03-21 17:42:36 -06:00
Joel Dice
50040b24f5 remove unused code from util.cpp 2008-03-21 14:33:44 -06:00
Joel Dice
c7a357aa5e implement l2d and l2f in interpret.cpp 2008-03-21 13:52:09 -06:00
Joel Dice
9fe2cbff43 implement l2d and l2f byte codes 2008-03-20 18:37:58 -06:00
Joel Dice
56389dd2e1 don't populate interface vtables for abstract classes 2008-03-20 18:37:21 -06:00
Joel Dice
d8889bd4d8 protect local variables from GC in jnienv.cpp 2008-03-20 18:36:53 -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
420a054fd8 support 1- and 2-byte moves to memory 2008-03-15 15:02:19 -06:00
Joel Dice
8141fc21b4 release base and index values of AbstractMemoryValue if necessary; bugfixes 2008-03-15 14:44:14 -06:00
Joel Dice
6bf0ca5bd9 various bugfixes and new instructions 2008-03-15 14:24:04 -06:00
Joel Dice
6a9fbc0c17 allow assembler to acquire and release temporary registers; new machine instruction implementations; bugfixes 2008-03-13 17:43:11 -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
c5b8b83cc7 clean up code for optimizing stack operations 2008-03-11 10:40:28 -06:00
Joel Dice
9e2e614a15 various fixes to get invokevirtual working 2008-03-10 16:37:21 -06:00
Joel Dice
a388ca19ee fix build for GCC 4.3
Note that this requires removing the -Wconversion flag for now.  I'll
see about restoring it when I'm ready to tackle all those warnings.
2008-03-10 13:49:10 -06:00
Joel Dice
0fe748c3a1 avoid unecessary mov instructions 2008-03-10 07:29:42 -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
888836f8cd use push and pop for stack operations instead of mov 2008-03-09 15:27:51 -06:00
Joel Dice
7cfb89bd2a Merge branch 'master' into compiler 2008-03-09 11:31:55 -06:00
Joel Dice
fbc5463fb1 specify Avian version via a macro defined in makefile 2008-03-06 13:30:26 -07: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
Eric Scharff
e616161d5a Fixes jar file loading for compressed jars.
zip files have a central directory header (which has correct information
about files) and a local file header (which sometimes does not.)  Always use
the central directory versions to get accurate data.
2008-02-25 17:29:26 -07:00