2e3fd111d4
fix regressions on x86_64
2009-02-01 16:19:11 -07:00
8b1801c465
various bugfixes involving multiword values
2009-02-01 16:10:56 -07:00
11408dc2cd
fix popIndex calculation in CallEvent ctor
2009-01-31 12:35:45 -07:00
8b6319fbc8
assume stack grows towards negative addresses when loading and storing multiword locals
2009-01-31 12:05:06 -07:00
a11d018dc2
fix assertion in MyCompiler::peek
2009-01-29 18:43:46 -07:00
8dca14af74
remove obsolete assertion from negateRR
2009-01-29 18:43:18 -07:00
1c3504b62a
fix various stack bugs
2009-01-29 18:36:19 -07:00
565ece136b
begin refactoring compiler.cpp to treat each word of a multiword value seperately
2009-01-25 15:03:38 -07:00
034444db57
fix a couple of bugs handling multi-word values
2009-01-12 09:26:43 -07:00
582e975a8a
remove temporary debug code
2009-01-11 16:46:36 -07:00
85ac9b9c71
revert overflow code in sitesToString since we now prune dead buddies from values
2009-01-11 16:46:22 -07:00
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
04bc58fd95
reorder code in MemorySite::release so we can use low->size before it is overwritten
2009-01-11 16:24:25 -07:00
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
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
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
8459489212
avoid overflow in sitesToString
2009-01-04 15:58:05 -07:00
9495d03dc6
explicitly load jump target in tableswitch to avoid retaining stale memory sites
2009-01-04 15:56:47 -07:00
c56f37197c
marshal values at branches to avoid duplication of effort at junctions
2009-01-04 14:52:46 -07:00
f4689093ee
try harder to find an acceptable source site in resolveSourceJunctionSites
2009-01-04 13:35:09 -07:00
ce1e161f52
allocate larger buffer for sitesToString
2009-01-04 12:38:31 -07:00
095e6d7bc3
prefer unowned resources in resourceCost
2009-01-04 12:34:38 -07:00
d76b4121ae
fix 64-bit constant case in addCR and subtractCR
2009-01-04 12:32:11 -07:00
ded2ffe437
more compile.cpp refactoring
2009-01-03 18:17:51 -07:00
ae24a6c18e
continue refactoring compiler.cpp to simplify register and frame resource allocation
2009-01-03 14:34:45 -07:00
7b546936d6
snapshot
2009-01-02 17:44:47 -07:00
c678fb30a4
snapshot
2008-12-24 13:35:43 -07:00
f96ee3ea73
handle p->value->reads == 0 case in visit
2008-12-22 18:25:00 -07:00
897586aa76
clobber overlapping locals in storeLocal; move fallback code in trySteal to increase its applicability
2008-12-22 17:55:29 -07:00
ac37941fa5
fix build error in previous commit
2008-12-21 18:14:24 -07:00
c9bec0ce96
only steal sites recursively when all else fails in trySteal
2008-12-21 18:14:20 -07:00
c78e76c747
temporarily reacquire source in releaseRegister
...
This avoids a SEGV when freezing the register.
2008-12-21 14:48:26 -07:00
055ec4dd9f
various fixes and cleanups concerning 64-bit values on 32-bit systems
2008-12-21 14:41:56 -07:00
b23f7374e9
don't steal sites in pickJunctionSite
2008-12-20 17:45:52 -07:00
b9b7ae4003
avoid clobbering first operand in CombineEvent.compile
2008-12-20 16:05:01 -07:00
cf4e8e7ec2
various fixes for marshalling values among registers and frame sites
2008-12-20 14:55:45 -07:00
75b3bf98ab
pick only unfrozen frame sites in save
2008-12-20 11:13:58 -07:00
bd89b8e00a
check for null array in HashMapIterator::find
2008-12-18 20:23:08 -07:00
2622773eb4
support bootimage build on OS X
2008-12-18 19:52:03 -07:00
e55b59905e
Merge branch 'master' of oss.readytalk.com:/var/local/git/avian
2008-12-18 16:32:23 -07:00
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
7ce35b212f
fix GCC 4.0.1 uninitialized value warning
2008-12-18 10:10:19 -07:00
a40ae85588
clear sites from dead value in removeBuddy
2008-12-15 18:21:01 -07:00
8819d01522
only set Context::forfeitedSite if value is live
2008-12-15 17:42:32 -07:00
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
7f4bd51464
don't use trySteal when moving sites between buddies
2008-12-13 13:54:26 -07:00
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
d50febe088
various control-flow related bugfixes
2008-12-11 18:09:36 -07:00
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
aa7b47eec4
fix merge confict fallout in heapdump.cpp
2008-12-04 14:35:25 -07:00