OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/parser.h" | 5 #include "vm/parser.h" |
6 #include "vm/flags.h" | 6 #include "vm/flags.h" |
7 | 7 |
8 #ifndef DART_PRECOMPILED_RUNTIME | 8 #ifndef DART_PRECOMPILED_RUNTIME |
9 | 9 |
10 #include "lib/invocation_mirror.h" | 10 #include "lib/invocation_mirror.h" |
(...skipping 12001 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12012 ConstantPosKey key(String::Handle(Z, script_.url()), token_pos); | 12012 ConstantPosKey key(String::Handle(Z, script_.url()), token_pos); |
12013 if (isolate()->object_store()->compile_time_constants() == Array::null()) { | 12013 if (isolate()->object_store()->compile_time_constants() == Array::null()) { |
12014 const intptr_t kInitialConstMapSize = 16; | 12014 const intptr_t kInitialConstMapSize = 16; |
12015 isolate()->object_store()->set_compile_time_constants( | 12015 isolate()->object_store()->set_compile_time_constants( |
12016 Array::Handle(Z, HashTables::New<ConstantsMap>(kInitialConstMapSize, | 12016 Array::Handle(Z, HashTables::New<ConstantsMap>(kInitialConstMapSize, |
12017 Heap::kNew))); | 12017 Heap::kNew))); |
12018 } | 12018 } |
12019 ConstantsMap constants(isolate()->object_store()->compile_time_constants()); | 12019 ConstantsMap constants(isolate()->object_store()->compile_time_constants()); |
12020 constants.InsertNewOrGetValue(key, value); | 12020 constants.InsertNewOrGetValue(key, value); |
12021 if (FLAG_compiler_stats) { | 12021 if (FLAG_compiler_stats) { |
12022 isolate_->compiler_stats()->num_cached_consts = constants.NumOccupied(); | 12022 thread_->compiler_stats()->num_cached_consts = constants.NumOccupied(); |
12023 } | 12023 } |
12024 isolate()->object_store()->set_compile_time_constants(constants.Release()); | 12024 isolate()->object_store()->set_compile_time_constants(constants.Release()); |
12025 } | 12025 } |
12026 | 12026 |
12027 | 12027 |
12028 bool Parser::GetCachedConstant(TokenPosition token_pos, Instance* value) { | 12028 bool Parser::GetCachedConstant(TokenPosition token_pos, Instance* value) { |
12029 if (isolate()->object_store()->compile_time_constants() == Array::null()) { | 12029 if (isolate()->object_store()->compile_time_constants() == Array::null()) { |
12030 return false; | 12030 return false; |
12031 } | 12031 } |
12032 ConstantPosKey key(String::Handle(Z, script_.url()), token_pos); | 12032 ConstantPosKey key(String::Handle(Z, script_.url()), token_pos); |
12033 ConstantsMap constants(isolate()->object_store()->compile_time_constants()); | 12033 ConstantsMap constants(isolate()->object_store()->compile_time_constants()); |
12034 bool is_present = false; | 12034 bool is_present = false; |
12035 *value ^= constants.GetOrNull(key, &is_present); | 12035 *value ^= constants.GetOrNull(key, &is_present); |
12036 // Mutator compiler thread may add constants while background compiler | 12036 // Mutator compiler thread may add constants while background compiler |
12037 // is running , and thus change the value of 'compile_time_constants'; | 12037 // is running , and thus change the value of 'compile_time_constants'; |
12038 // do not assert that 'compile_time_constants' has not changed. | 12038 // do not assert that 'compile_time_constants' has not changed. |
12039 constants.Release(); | 12039 constants.Release(); |
12040 if (FLAG_compiler_stats && is_present) { | 12040 if (FLAG_compiler_stats && is_present) { |
12041 isolate_->compiler_stats()->num_const_cache_hits++; | 12041 thread_->compiler_stats()->num_const_cache_hits++; |
12042 } | 12042 } |
12043 return is_present; | 12043 return is_present; |
12044 } | 12044 } |
12045 | 12045 |
12046 | 12046 |
12047 RawInstance* Parser::TryCanonicalize(const Instance& instance, | 12047 RawInstance* Parser::TryCanonicalize(const Instance& instance, |
12048 TokenPosition token_pos) { | 12048 TokenPosition token_pos) { |
12049 if (instance.IsNull()) { | 12049 if (instance.IsNull()) { |
12050 return instance.raw(); | 12050 return instance.raw(); |
12051 } | 12051 } |
(...skipping 2410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
14462 const ArgumentListNode& function_args, | 14462 const ArgumentListNode& function_args, |
14463 const LocalVariable* temp_for_last_arg, | 14463 const LocalVariable* temp_for_last_arg, |
14464 bool is_super_invocation) { | 14464 bool is_super_invocation) { |
14465 UNREACHABLE(); | 14465 UNREACHABLE(); |
14466 return NULL; | 14466 return NULL; |
14467 } | 14467 } |
14468 | 14468 |
14469 } // namespace dart | 14469 } // namespace dart |
14470 | 14470 |
14471 #endif // DART_PRECOMPILED_RUNTIME | 14471 #endif // DART_PRECOMPILED_RUNTIME |
OLD | NEW |