OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/bootstrapper.h" | 8 #include "src/bootstrapper.h" |
9 #include "src/messages.h" | 9 #include "src/messages.h" |
10 #include "src/parser.h" | 10 #include "src/parser.h" |
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
586 return NULL; | 586 return NULL; |
587 } | 587 } |
588 | 588 |
589 | 589 |
590 class VarAndOrder { | 590 class VarAndOrder { |
591 public: | 591 public: |
592 VarAndOrder(Variable* var, int order) : var_(var), order_(order) { } | 592 VarAndOrder(Variable* var, int order) : var_(var), order_(order) { } |
593 Variable* var() const { return var_; } | 593 Variable* var() const { return var_; } |
594 int order() const { return order_; } | 594 int order() const { return order_; } |
595 static int Compare(const VarAndOrder* a, const VarAndOrder* b) { | 595 static int Compare(const VarAndOrder* a, const VarAndOrder* b) { |
596 // Sort lexical variables to the end of the list. | 596 return a->order_ - b->order_; |
597 bool a_is_lexical = IsLexicalVariableMode(a->var()->mode()); | |
598 bool b_is_lexical = IsLexicalVariableMode(b->var()->mode()); | |
599 if (a_is_lexical == b_is_lexical) return a->order_ - b->order_; | |
600 return a_is_lexical ? 1 : -1; | |
601 } | 597 } |
602 | 598 |
603 private: | 599 private: |
604 Variable* var_; | 600 Variable* var_; |
605 int order_; | 601 int order_; |
606 }; | 602 }; |
607 | 603 |
608 | 604 |
609 void Scope::CollectStackAndContextLocals( | 605 void Scope::CollectStackAndContextLocals( |
610 ZoneList<Variable*>* stack_locals, ZoneList<Variable*>* context_locals, | 606 ZoneList<Variable*>* stack_locals, ZoneList<Variable*>* context_locals, |
(...skipping 999 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1610 function_ != NULL && function_->proxy()->var()->IsContextSlot(); | 1606 function_ != NULL && function_->proxy()->var()->IsContextSlot(); |
1611 return num_heap_slots() - Context::MIN_CONTEXT_SLOTS - num_global_slots() - | 1607 return num_heap_slots() - Context::MIN_CONTEXT_SLOTS - num_global_slots() - |
1612 (is_function_var_in_context ? 1 : 0); | 1608 (is_function_var_in_context ? 1 : 0); |
1613 } | 1609 } |
1614 | 1610 |
1615 | 1611 |
1616 int Scope::ContextGlobalCount() const { return num_global_slots(); } | 1612 int Scope::ContextGlobalCount() const { return num_global_slots(); } |
1617 | 1613 |
1618 } // namespace internal | 1614 } // namespace internal |
1619 } // namespace v8 | 1615 } // namespace v8 |
OLD | NEW |