Commit Graph

258 Commits

Author SHA1 Message Date
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
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
8459489212 avoid overflow in sitesToString 2009-01-04 15:58:05 -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
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
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
264779ed2a copy site if necessary to avoid chaining to another site in resolveJunctionSite 2008-11-25 19:23:47 -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
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
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