| OLD | NEW |
| 1 // Copyright 2017 the V8 project authors. All rights reserved. | 1 // Copyright 2017 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 #ifndef V8_CCTEST_SCOPE_TEST_HELPER_H_ | 5 #ifndef V8_CCTEST_SCOPE_TEST_HELPER_H_ |
| 6 #define V8_CCTEST_SCOPE_TEST_HELPER_H_ | 6 #define V8_CCTEST_SCOPE_TEST_HELPER_H_ |
| 7 | 7 |
| 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 | 10 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 for (Scope* inner = scope->inner_scope(); inner != nullptr; | 25 for (Scope* inner = scope->inner_scope(); inner != nullptr; |
| 26 inner = inner->sibling()) { | 26 inner = inner->sibling()) { |
| 27 if (!ScopeTreeIsHidden(inner)) { | 27 if (!ScopeTreeIsHidden(inner)) { |
| 28 return false; | 28 return false; |
| 29 } | 29 } |
| 30 } | 30 } |
| 31 return true; | 31 return true; |
| 32 } | 32 } |
| 33 | 33 |
| 34 static void CompareScopeToData(Scope* scope, const PreParsedScopeData* data, | 34 static void CompareScopeToData(Scope* scope, const PreParsedScopeData* data, |
| 35 size_t& index) { | 35 size_t& index, bool precise_maybe_assigned) { |
| 36 CHECK_EQ(data->backing_store_[index++], scope->scope_type()); | 36 CHECK_EQ(data->backing_store_[index++], scope->scope_type()); |
| 37 CHECK_EQ(data->backing_store_[index++], scope->start_position()); | 37 CHECK_EQ(data->backing_store_[index++], scope->start_position()); |
| 38 CHECK_EQ(data->backing_store_[index++], scope->end_position()); | 38 CHECK_EQ(data->backing_store_[index++], scope->end_position()); |
| 39 | 39 |
| 40 int inner_scope_count = 0; | 40 int inner_scope_count = 0; |
| 41 for (Scope* inner = scope->inner_scope(); inner != nullptr; | 41 for (Scope* inner = scope->inner_scope(); inner != nullptr; |
| 42 inner = inner->sibling()) { | 42 inner = inner->sibling()) { |
| 43 // FIXME(marja): This is probably not the right condition for knowing what | 43 // FIXME(marja): This is probably not the right condition for knowing what |
| 44 // scopes are present in the preparse data. | 44 // scopes are present in the preparse data. |
| 45 if (!ScopeTreeIsHidden(inner)) { | 45 if (!ScopeTreeIsHidden(inner)) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 63 local->mode() == CONST) { | 63 local->mode() == CONST) { |
| 64 #ifdef DEBUG | 64 #ifdef DEBUG |
| 65 const AstRawString* local_name = local->raw_name(); | 65 const AstRawString* local_name = local->raw_name(); |
| 66 int name_length = data->backing_store_[index++]; | 66 int name_length = data->backing_store_[index++]; |
| 67 CHECK_EQ(name_length, local_name->length()); | 67 CHECK_EQ(name_length, local_name->length()); |
| 68 for (int i = 0; i < name_length; ++i) { | 68 for (int i = 0; i < name_length; ++i) { |
| 69 CHECK_EQ(data->backing_store_[index++], local_name->raw_data()[i]); | 69 CHECK_EQ(data->backing_store_[index++], local_name->raw_data()[i]); |
| 70 } | 70 } |
| 71 #endif | 71 #endif |
| 72 CHECK_EQ(data->backing_store_[index++], local->location()); | 72 CHECK_EQ(data->backing_store_[index++], local->location()); |
| 73 CHECK_EQ(data->backing_store_[index++], local->maybe_assigned()); | 73 if (precise_maybe_assigned) { |
| 74 CHECK_EQ(data->backing_store_[index++], local->maybe_assigned()); |
| 75 } else { |
| 76 STATIC_ASSERT(kMaybeAssigned > kNotAssigned); |
| 77 CHECK_GE(data->backing_store_[index++], local->maybe_assigned()); |
| 78 } |
| 74 } | 79 } |
| 75 } | 80 } |
| 76 | 81 |
| 77 for (Scope* inner = scope->inner_scope(); inner != nullptr; | 82 for (Scope* inner = scope->inner_scope(); inner != nullptr; |
| 78 inner = inner->sibling()) { | 83 inner = inner->sibling()) { |
| 79 if (!ScopeTreeIsHidden(inner)) { | 84 if (!ScopeTreeIsHidden(inner)) { |
| 80 CompareScopeToData(inner, data, index); | 85 CompareScopeToData(inner, data, index, precise_maybe_assigned); |
| 81 } | 86 } |
| 82 } | 87 } |
| 83 } | 88 } |
| 84 }; | 89 }; |
| 85 } // namespace internal | 90 } // namespace internal |
| 86 } // namespace v8 | 91 } // namespace v8 |
| 87 | 92 |
| 88 #endif // V8_CCTEST_SCOPE_TEST_HELPER_H_ | 93 #endif // V8_CCTEST_SCOPE_TEST_HELPER_H_ |
| OLD | NEW |