prefer unowned resources in resourceCost

This commit is contained in:
Joel Dice 2009-01-04 12:34:38 -07:00
parent d76b4121ae
commit 095e6d7bc3

View File

@ -962,10 +962,12 @@ resourceCost(Context* c, Value* v, Resource* r)
if (r->value) { if (r->value) {
assert(c, findSite(c, r->value, r->site)); assert(c, findSite(c, r->value, r->site));
if (hasMoreThanOneSite(r->value) or (v and buddies(r->value, v))) { if (v and buddies(r->value, v)) {
return 0; return 0;
} else { } else if (hasMoreThanOneSite(r->value)) {
return 1; return 1;
} else {
return 2;
} }
} else { } else {
return 0; return 0;
@ -4167,6 +4169,8 @@ class Client: public Assembler::Client {
virtual void save(int r) { virtual void save(int r) {
RegisterResource* reg = c->registerResources + r; RegisterResource* reg = c->registerResources + r;
// fprintf(stderr, "save register %d %p %d\n",
// r, reg->value, reg->referenceCount);
if (reg->value or reg->referenceCount) { if (reg->value or reg->referenceCount) {
releaseRegister(c, r); releaseRegister(c, r);
} }