| Index: src/lithium.h
|
| diff --git a/src/lithium.h b/src/lithium.h
|
| index a3e574d89e32c656c8db7bafef090ea57dfc37d2..ea023a980b86fb228d93d1758a26398919dcc58a 100644
|
| --- a/src/lithium.h
|
| +++ b/src/lithium.h
|
| @@ -518,34 +518,34 @@ class ShallowIterator BASE_EMBEDDED {
|
| : env_(env),
|
| limit_(env != NULL ? env->values()->length() : 0),
|
| current_(0) {
|
| - current_ = AdvanceToNext(0);
|
| + SkipUninteresting();
|
| }
|
|
|
| - inline bool HasNext() {
|
| - return env_ != NULL && current_ < limit_;
|
| - }
|
| + bool Done() { return current_ >= limit_; }
|
|
|
| - inline LOperand* Next() {
|
| - ASSERT(HasNext());
|
| + LOperand* Current() {
|
| + ASSERT(!Done());
|
| return env_->values()->at(current_);
|
| }
|
|
|
| - inline void Advance() {
|
| - current_ = AdvanceToNext(current_ + 1);
|
| + void Advance() {
|
| + ASSERT(!Done());
|
| + ++current_;
|
| + SkipUninteresting();
|
| }
|
|
|
| - inline LEnvironment* env() { return env_; }
|
| + LEnvironment* env() { return env_; }
|
|
|
| private:
|
| - inline bool ShouldSkip(LOperand* op) {
|
| + bool ShouldSkip(LOperand* op) {
|
| return op == NULL || op->IsConstantOperand() || op->IsArgument();
|
| }
|
|
|
| - inline int AdvanceToNext(int start) {
|
| - while (start < limit_ && ShouldSkip(env_->values()->at(start))) {
|
| - start++;
|
| + // Skip until something interesting, beginning with and including current_.
|
| + void SkipUninteresting() {
|
| + while (current_ < limit_ && ShouldSkip(env_->values()->at(current_))) {
|
| + ++current_;
|
| }
|
| - return start;
|
| }
|
|
|
| LEnvironment* env_;
|
| @@ -558,31 +558,27 @@ class ShallowIterator BASE_EMBEDDED {
|
| class DeepIterator BASE_EMBEDDED {
|
| public:
|
| explicit DeepIterator(LEnvironment* env)
|
| - : current_iterator_(env) { }
|
| -
|
| - inline bool HasNext() {
|
| - if (current_iterator_.HasNext()) return true;
|
| - if (current_iterator_.env() == NULL) return false;
|
| - AdvanceToOuter();
|
| - return current_iterator_.HasNext();
|
| + : current_iterator_(env) {
|
| + SkipUninteresting();
|
| }
|
|
|
| - inline LOperand* Next() {
|
| - ASSERT(current_iterator_.HasNext());
|
| - return current_iterator_.Next();
|
| + bool Done() { return current_iterator_.Done(); }
|
| +
|
| + LOperand* Current() {
|
| + ASSERT(!current_iterator_.Done());
|
| + return current_iterator_.Current();
|
| }
|
|
|
| - inline void Advance() {
|
| - if (current_iterator_.HasNext()) {
|
| - current_iterator_.Advance();
|
| - } else {
|
| - AdvanceToOuter();
|
| - }
|
| + void Advance() {
|
| + current_iterator_.Advance();
|
| + SkipUninteresting();
|
| }
|
|
|
| private:
|
| - inline void AdvanceToOuter() {
|
| - current_iterator_ = ShallowIterator(current_iterator_.env()->outer());
|
| + void SkipUninteresting() {
|
| + while (current_iterator_.env() != NULL && current_iterator_.Done()) {
|
| + current_iterator_ = ShallowIterator(current_iterator_.env()->outer());
|
| + }
|
| }
|
|
|
| ShallowIterator current_iterator_;
|
|
|