[turbofan] OSR loops assign all local variables.

R=mstarzinger@chromium.org
BUG=

Review URL: https://codereview.chromium.org/886733005

Cr-Commit-Position: refs/heads/master@{#26493}
This commit is contained in:
titzer 2015-02-06 07:56:58 -08:00 committed by Commit bot
parent 51c59ede18
commit d9892bbd5a
2 changed files with 4 additions and 0 deletions

View File

@ -103,6 +103,8 @@ class BitVector : public ZoneObject {
data_[i / kDataBits] |= (kOne << (i % kDataBits));
}
void AddAll() { memset(data_, -1, sizeof(uintptr_t) * data_length_); }
void Remove(int i) {
DCHECK(i >= 0 && i < length());
data_[i / kDataBits] &= ~(kOne << (i % kDataBits));

View File

@ -30,6 +30,8 @@ void ALAA::Enter(IterationStatement* loop) {
int num_variables = 1 + info()->scope()->num_parameters() +
info()->scope()->num_stack_slots();
BitVector* bits = new (zone()) BitVector(num_variables, zone());
if (info()->is_osr() && info()->osr_ast_id() == loop->OsrEntryId())
bits->AddAll();
loop_stack_.push_back(bits);
}