OLD | NEW |
---|---|
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 <stdlib.h> | 5 #include <stdlib.h> |
6 | 6 |
7 #include "src/ast/context-slot-cache.h" | 7 #include "src/ast/context-slot-cache.h" |
8 #include "src/ast/scopes.h" | 8 #include "src/ast/scopes.h" |
9 #include "src/ast/variables.h" | 9 #include "src/ast/variables.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
611 | 611 |
612 bool ScopeInfo::VariableIsSynthetic(String* name) { | 612 bool ScopeInfo::VariableIsSynthetic(String* name) { |
613 // There's currently no flag stored on the ScopeInfo to indicate that a | 613 // There's currently no flag stored on the ScopeInfo to indicate that a |
614 // variable is a compiler-introduced temporary. However, to avoid conflict | 614 // variable is a compiler-introduced temporary. However, to avoid conflict |
615 // with user declarations, the current temporaries like .generator_object and | 615 // with user declarations, the current temporaries like .generator_object and |
616 // .result start with a dot, so we can use that as a flag. It's a hack! | 616 // .result start with a dot, so we can use that as a flag. It's a hack! |
617 return name->length() == 0 || name->Get(0) == '.' || | 617 return name->length() == 0 || name->Get(0) == '.' || |
618 name->Equals(name->GetHeap()->this_string()); | 618 name->Equals(name->GetHeap()->this_string()); |
619 } | 619 } |
620 | 620 |
621 bool Scope::VariableIsSynthetic(const AstRawString* name) { | |
adamk
2016/09/19 20:01:25
Yikes, I think this should be in scopes.cc. If you
| |
622 // There's currently no flag stored on the ScopeInfo to indicate that a | |
623 // variable is a compiler-introduced temporary. However, to avoid conflict | |
624 // with user declarations, the current temporaries like .generator_object and | |
625 // .result start with a dot, so we can use that as a flag. It's a hack! | |
626 return name->length() == 0 || name->FirstCharacter() == '.' || | |
627 name->IsOneByteEqualTo("this"); | |
628 } | |
621 | 629 |
622 int ScopeInfo::StackSlotIndex(String* name) { | 630 int ScopeInfo::StackSlotIndex(String* name) { |
623 DCHECK(name->IsInternalizedString()); | 631 DCHECK(name->IsInternalizedString()); |
624 if (length() > 0) { | 632 if (length() > 0) { |
625 int first_slot_index = Smi::cast(get(StackLocalFirstSlotIndex()))->value(); | 633 int first_slot_index = Smi::cast(get(StackLocalFirstSlotIndex()))->value(); |
626 int start = StackLocalNamesIndex(); | 634 int start = StackLocalNamesIndex(); |
627 int end = start + StackLocalCount(); | 635 int end = start + StackLocalCount(); |
628 for (int i = start; i < end; ++i) { | 636 for (int i = start; i < end; ++i) { |
629 if (name == get(i)) { | 637 if (name == get(i)) { |
630 return i - start + first_slot_index; | 638 return i - start + first_slot_index; |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
874 } | 882 } |
875 | 883 |
876 Handle<ModuleInfo> result = isolate->factory()->NewModuleInfo(); | 884 Handle<ModuleInfo> result = isolate->factory()->NewModuleInfo(); |
877 result->set(kSpecialExportsIndex, *special_exports); | 885 result->set(kSpecialExportsIndex, *special_exports); |
878 result->set(kRegularExportsIndex, *regular_exports); | 886 result->set(kRegularExportsIndex, *regular_exports); |
879 return result; | 887 return result; |
880 } | 888 } |
881 | 889 |
882 } // namespace internal | 890 } // namespace internal |
883 } // namespace v8 | 891 } // namespace v8 |
OLD | NEW |