Reducing value count. IVM could take advantage of this.

This commit is contained in:
Ben Vanik
2014-01-25 22:47:21 -08:00
parent 05432242ff
commit c4d6c7a526
9 changed files with 250 additions and 23 deletions

View File

@@ -126,12 +126,14 @@ uint32_t AllocLabel(TranslationContext& ctx, Label* label) {
}
uint32_t AllocDynamicRegister(TranslationContext& ctx, Value* value) {
int32_t reg = (int32_t)value->tag - 1;
if (reg == -1) {
reg = ctx.register_count++;
value->tag = (void*)(reg + 1);
if (value->flags & VALUE_IS_ALLOCATED) {
return (uint32_t)value->tag;
} else {
value->flags |= VALUE_IS_ALLOCATED;
auto reg = ctx.register_count++;
value->tag = (void*)reg;
return (uint32_t)reg;
}
return (uint32_t)reg;
}
uint32_t AllocOpRegister(