| 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/object.h" | 5 #include "vm/object.h" |
| 6 | 6 |
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" |
| 10 #include "vm/cpu.h" | 10 #include "vm/cpu.h" |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 DEFINE_FLAG(bool, overlap_type_arguments, true, | 53 DEFINE_FLAG(bool, overlap_type_arguments, true, |
| 54 "When possible, partially or fully overlap the type arguments of a type " | 54 "When possible, partially or fully overlap the type arguments of a type " |
| 55 "with the type arguments of its super type."); | 55 "with the type arguments of its super type."); |
| 56 DEFINE_FLAG(bool, show_internal_names, false, | 56 DEFINE_FLAG(bool, show_internal_names, false, |
| 57 "Show names of internal classes (e.g. \"OneByteString\") in error messages " | 57 "Show names of internal classes (e.g. \"OneByteString\") in error messages " |
| 58 "instead of showing the corresponding interface names (e.g. \"String\")"); | 58 "instead of showing the corresponding interface names (e.g. \"String\")"); |
| 59 DEFINE_FLAG(bool, use_lib_cache, true, "Use library name cache"); | 59 DEFINE_FLAG(bool, use_lib_cache, true, "Use library name cache"); |
| 60 DEFINE_FLAG(bool, ignore_patch_signature_mismatch, false, | 60 DEFINE_FLAG(bool, ignore_patch_signature_mismatch, false, |
| 61 "Ignore patch file member signature mismatch."); | 61 "Ignore patch file member signature mismatch."); |
| 62 | 62 |
| 63 DECLARE_FLAG(charp, coverage_dir); | |
| 64 DECLARE_FLAG(bool, show_invisible_frames); | 63 DECLARE_FLAG(bool, show_invisible_frames); |
| 65 DECLARE_FLAG(bool, trace_deoptimization); | 64 DECLARE_FLAG(bool, trace_deoptimization); |
| 66 DECLARE_FLAG(bool, trace_deoptimization_verbose); | 65 DECLARE_FLAG(bool, trace_deoptimization_verbose); |
| 67 DECLARE_FLAG(bool, write_protect_code); | 66 DECLARE_FLAG(bool, write_protect_code); |
| 68 | 67 |
| 69 | 68 |
| 70 static const char* const kGetterPrefix = "get:"; | 69 static const char* const kGetterPrefix = "get:"; |
| 71 static const intptr_t kGetterPrefixLength = strlen(kGetterPrefix); | 70 static const intptr_t kGetterPrefixLength = strlen(kGetterPrefix); |
| 72 static const char* const kSetterPrefix = "set:"; | 71 static const char* const kSetterPrefix = "set:"; |
| 73 static const intptr_t kSetterPrefixLength = strlen(kSetterPrefix); | 72 static const intptr_t kSetterPrefixLength = strlen(kSetterPrefix); |
| (...skipping 5716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5790 void Function::SetNumOptionalParameters(intptr_t num_optional_parameters, | 5789 void Function::SetNumOptionalParameters(intptr_t num_optional_parameters, |
| 5791 bool are_optional_positional) const { | 5790 bool are_optional_positional) const { |
| 5792 ASSERT(num_optional_parameters >= 0); | 5791 ASSERT(num_optional_parameters >= 0); |
| 5793 set_num_optional_parameters(are_optional_positional ? | 5792 set_num_optional_parameters(are_optional_positional ? |
| 5794 num_optional_parameters : | 5793 num_optional_parameters : |
| 5795 -num_optional_parameters); | 5794 -num_optional_parameters); |
| 5796 } | 5795 } |
| 5797 | 5796 |
| 5798 | 5797 |
| 5799 bool Function::IsOptimizable() const { | 5798 bool Function::IsOptimizable() const { |
| 5800 if (FLAG_coverage_dir != NULL) { | |
| 5801 // Do not optimize if collecting coverage data. | |
| 5802 return false; | |
| 5803 } | |
| 5804 if (is_native()) { | 5799 if (is_native()) { |
| 5805 // Native methods don't need to be optimized. | 5800 // Native methods don't need to be optimized. |
| 5806 return false; | 5801 return false; |
| 5807 } | 5802 } |
| 5808 const intptr_t function_length = end_token_pos().Pos() - token_pos().Pos(); | 5803 const intptr_t function_length = end_token_pos().Pos() - token_pos().Pos(); |
| 5809 if (is_optimizable() && (script() != Script::null()) && | 5804 if (is_optimizable() && (script() != Script::null()) && |
| 5810 (function_length < FLAG_huge_method_cutoff_in_tokens)) { | 5805 (function_length < FLAG_huge_method_cutoff_in_tokens)) { |
| 5811 // Additional check needed for implicit getters. | 5806 // Additional check needed for implicit getters. |
| 5812 return (unoptimized_code() == Object::null()) || | 5807 return (unoptimized_code() == Object::null()) || |
| 5813 (Code::Handle(unoptimized_code()).Size() < | 5808 (Code::Handle(unoptimized_code()).Size() < |
| (...skipping 15968 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 21782 return UserTag::null(); | 21777 return UserTag::null(); |
| 21783 } | 21778 } |
| 21784 | 21779 |
| 21785 | 21780 |
| 21786 const char* UserTag::ToCString() const { | 21781 const char* UserTag::ToCString() const { |
| 21787 const String& tag_label = String::Handle(label()); | 21782 const String& tag_label = String::Handle(label()); |
| 21788 return tag_label.ToCString(); | 21783 return tag_label.ToCString(); |
| 21789 } | 21784 } |
| 21790 | 21785 |
| 21791 } // namespace dart | 21786 } // namespace dart |
| OLD | NEW |