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
Joel Dice
823148841a
fix generation of UnsatisfiedLinkError message in resolveNativeMethodData
2008-02-20 10:51:54 -07:00
Joel Dice
9601f2fb04
fix process=interpret build
2008-02-20 10:48:08 -07:00
Eric Scharff
1f48d39a8a
Reset debugging flag
2008-02-20 10:14:42 -07:00
Eric Scharff
8f4cb3315a
do not call dlclose on the main executable (to avoid crashes)
2008-02-20 09:41:30 -07:00
Joel Dice
85abd14137
change avium.version to avian.version
2008-02-20 08:13:15 -07:00
Joel Dice
2f1bdfeb27
remove x86.cpp
2008-02-19 19:10:18 -07:00
Joel Dice
5680f14eb1
remove compiler2.{h,cpp}, since that work has moved to a seperate branch
2008-02-19 19:03:06 -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
6271f878e8
include function prologue and epilogue when compiling
2008-02-12 08:21:51 -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
713ff23881
clean up sketch of new compiler
2008-02-09 13:11:37 -07:00
Joel Dice
dc04c63491
more work on new compiler
2008-02-08 16:18:57 -07:00
Joel Dice
7bb69b1c56
more work on new compiler
2008-02-07 17:24:54 -07:00
Joel Dice
4860060bf8
refine sketch of new compiler a bit
2008-02-07 16:47:48 -07:00
Joel Dice
52c447f68b
early sketch of new compiler
2008-02-07 12:04:18 -07:00
Joel Dice
94404b7f89
remove unused major collection interval code
2008-02-02 13:34:29 -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
55e3e8871d
trigger major GCs more aggressively under low memory conditions
2008-01-31 17:50:38 -07:00
Joel Dice
491955af05
fix recent regression in native method lookup on Windows
2008-01-30 17:09:21 -07:00
Joel Dice
eeac584474
fix thinko in invokeNative2
2008-01-30 17:08:47 -07:00
Joel Dice
34cc390286
fix uninitialized variable warning
2008-01-29 10:02:58 -07:00
Joel Dice
d693393293
remove Machine::lastLibrary and rename firstLibrary to libraries
2008-01-29 08:19:15 -07:00
Eric Scharff
2363d6e8eb
Fix debug build for Mac OS X
2008-01-28 16:35:23 -07:00
Eric Scharff
e5f95ae89d
Fix pesky compiler warning on unused variable in linux.
2008-01-28 16:22:16 -07:00
Eric Scharff
8a8a123e02
Merge branch 'master' of ssh://dice.ecovate.com/~dicej/git/vm
2008-01-28 16:17:28 -07:00
Eric Scharff
c1f3d28d24
Fixes dynamic symbol loading bug on Mac OS X.
...
On OS X, when you call dlopen() on a null library, and then call dlsym(),
the most recently loaded symbols are always used, no matter what flags
we seem to pass to dlopen(). The solution is to explicitly find the name
of the running executable, and open that as a library.
2008-01-28 16:17:22 -07:00
Dain
098e185ebe
fixed compile error, function in vm namespace needed to call function in the anonymous namespace
2008-01-28 13:24:32 -07:00
Joel Dice
d68c2e6e2c
when looking up native methods, check for both the undecorated and decorated symbol before moving on to the next library
2008-01-28 11:21:09 -07:00
Joel Dice
008ac07079
refactor native method resolution to be simpler and more robust
2008-01-28 10:27:02 -07:00
Joel Dice
de6a1ded92
ensure that we populate the interface vtables of a class which does not declare any new virtual methods but does implement new interfaces relative to its superclass
2008-01-28 08:12:06 -07:00
Joel Dice
941ca81e79
fix build breakage in windows.cpp
2008-01-25 17:48:03 -07:00
Joel Dice
8150b957c9
support JIT compiling methods with unsorted exception handler tables
2008-01-25 17:17:27 -07:00
Joel Dice
e403a625d1
second try to fix library symbol lookup
2008-01-25 16:38:26 -07:00
Joel Dice
4ea8b0a1fe
Merge branch 'master' of dice:git/vm
2008-01-25 16:25:37 -07:00
Joel Dice
35ada0ea65
search libraries for symbols in the order they are loaded
2008-01-25 16:25:30 -07:00
Joel Dice
6bca3a8665
additional tweaks to make embedded resources work on darwin
2008-01-23 10:12:56 -07:00
Joel Dice
618684de6e
support embedded resources on darwin via binaryToMacho.cpp
2008-01-23 09:56:25 -07:00
Joel Dice
73ba3fcef7
fix build breakage in stress mode
2008-01-23 09:55:29 -07:00
Joel Dice
125fe3440e
allow java.lang.Object with no virtual methods, which may occur due to code shrinking
2008-01-21 16:42:12 -07:00
Joel Dice
c9714c73f2
fix frame map calculations involving exception handlers
2008-01-20 16:03:28 -07:00
Joel Dice
422133d1ba
initialize vtables with pointers to JIT function, including native methods, since this allows code shrinkers to eliminate unused methods without confusing the VM
2008-01-20 15:05:59 -07:00
Joel Dice
a69c366d07
save 'this' pointer on entrance to synchronized, non-static, non-native methods so we can release the monitor on exit, reguardless of whether the pointer at local index zero is overwritten
2008-01-20 11:55:08 -07:00
Joel Dice
e9826b2d7f
accept foo.bar.Baz as well as foo/bar/Baz in FindClass
2008-01-19 13:30:11 -07:00
Joel Dice
ee60d48cfe
fix subtle bug in hashMapInsert which caused us to update the old array previously associated with the hash map, whereas a GC causes the table to be resized when a weak reference is removed and thus a new array used
2008-01-19 13:12:16 -07:00
Joel Dice
d97fab6036
comment out some debugging log messages
2008-01-18 18:49:30 -07:00
Joel Dice
35160e46d8
don't include embedded boot classpath in libvm.a, only the executable
2008-01-18 17:54:36 -07:00
Joel Dice
88a8e74a53
fix register to memory mov1 implementation
2008-01-18 15:01:50 -07:00