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 2872 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2883 virtual void ReportSwitchingCode(const Code& code) { | 2883 virtual void ReportSwitchingCode(const Code& code) { |
2884 if (FLAG_trace_deoptimization || FLAG_trace_deoptimization_verbose) { | 2884 if (FLAG_trace_deoptimization || FLAG_trace_deoptimization_verbose) { |
2885 Function& function = Function::Handle(code.function()); | 2885 Function& function = Function::Handle(code.function()); |
2886 THR_Print("Switching %s to unoptimized code because CHA invalid" | 2886 THR_Print("Switching %s to unoptimized code because CHA invalid" |
2887 " (%s)\n", | 2887 " (%s)\n", |
2888 function.ToFullyQualifiedCString(), | 2888 function.ToFullyQualifiedCString(), |
2889 cls_.ToCString()); | 2889 cls_.ToCString()); |
2890 } | 2890 } |
2891 } | 2891 } |
2892 | 2892 |
| 2893 virtual void IncrementInvalidationGen() { |
| 2894 Isolate::Current()->IncrCHAInvalidationGen(); |
| 2895 } |
| 2896 |
2893 private: | 2897 private: |
2894 const Class& cls_; | 2898 const Class& cls_; |
2895 DISALLOW_COPY_AND_ASSIGN(CHACodeArray); | 2899 DISALLOW_COPY_AND_ASSIGN(CHACodeArray); |
2896 }; | 2900 }; |
2897 | 2901 |
2898 | 2902 |
2899 void Class::RegisterCHACode(const Code& code) { | 2903 void Class::RegisterCHACode(const Code& code) { |
2900 if (FLAG_trace_cha) { | 2904 if (FLAG_trace_cha) { |
2901 THR_Print("RegisterCHACode %s class %s\n", | 2905 THR_Print("RegisterCHACode %s class %s\n", |
2902 Function::Handle(code.function()).ToQualifiedCString(), ToCString()); | 2906 Function::Handle(code.function()).ToQualifiedCString(), ToCString()); |
(...skipping 4864 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7767 virtual void ReportSwitchingCode(const Code& code) { | 7771 virtual void ReportSwitchingCode(const Code& code) { |
7768 if (FLAG_trace_deoptimization || FLAG_trace_deoptimization_verbose) { | 7772 if (FLAG_trace_deoptimization || FLAG_trace_deoptimization_verbose) { |
7769 Function& function = Function::Handle(code.function()); | 7773 Function& function = Function::Handle(code.function()); |
7770 THR_Print("Switching %s to unoptimized code because guard" | 7774 THR_Print("Switching %s to unoptimized code because guard" |
7771 " on field %s was violated.\n", | 7775 " on field %s was violated.\n", |
7772 function.ToFullyQualifiedCString(), | 7776 function.ToFullyQualifiedCString(), |
7773 field_.ToCString()); | 7777 field_.ToCString()); |
7774 } | 7778 } |
7775 } | 7779 } |
7776 | 7780 |
| 7781 virtual void IncrementInvalidationGen() { |
| 7782 Isolate::Current()->IncrFieldInvalidationGen(); |
| 7783 } |
| 7784 |
7777 private: | 7785 private: |
7778 const Field& field_; | 7786 const Field& field_; |
7779 DISALLOW_COPY_AND_ASSIGN(FieldDependentArray); | 7787 DISALLOW_COPY_AND_ASSIGN(FieldDependentArray); |
7780 }; | 7788 }; |
7781 | 7789 |
7782 | 7790 |
7783 void Field::RegisterDependentCode(const Code& code) const { | 7791 void Field::RegisterDependentCode(const Code& code) const { |
7784 ASSERT(code.is_optimized()); | 7792 ASSERT(code.is_optimized()); |
7785 FieldDependentArray a(*this); | 7793 FieldDependentArray a(*this); |
7786 a.Register(code); | 7794 a.Register(code); |
(...skipping 3021 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10808 virtual void ReportSwitchingCode(const Code& code) { | 10816 virtual void ReportSwitchingCode(const Code& code) { |
10809 if (FLAG_trace_deoptimization || FLAG_trace_deoptimization_verbose) { | 10817 if (FLAG_trace_deoptimization || FLAG_trace_deoptimization_verbose) { |
10810 THR_Print("Prefix '%s': disabling %s code for %s function '%s'\n", | 10818 THR_Print("Prefix '%s': disabling %s code for %s function '%s'\n", |
10811 String::Handle(prefix_.name()).ToCString(), | 10819 String::Handle(prefix_.name()).ToCString(), |
10812 code.is_optimized() ? "optimized" : "unoptimized", | 10820 code.is_optimized() ? "optimized" : "unoptimized", |
10813 code.IsDisabled() ? "'patched'" : "'unpatched'", | 10821 code.IsDisabled() ? "'patched'" : "'unpatched'", |
10814 Function::Handle(code.function()).ToCString()); | 10822 Function::Handle(code.function()).ToCString()); |
10815 } | 10823 } |
10816 } | 10824 } |
10817 | 10825 |
| 10826 virtual void IncrementInvalidationGen() { |
| 10827 Isolate::Current()->IncrPrefixInvalidationGen(); |
| 10828 } |
| 10829 |
10818 private: | 10830 private: |
10819 const LibraryPrefix& prefix_; | 10831 const LibraryPrefix& prefix_; |
10820 DISALLOW_COPY_AND_ASSIGN(PrefixDependentArray); | 10832 DISALLOW_COPY_AND_ASSIGN(PrefixDependentArray); |
10821 }; | 10833 }; |
10822 | 10834 |
10823 | 10835 |
10824 void LibraryPrefix::RegisterDependentCode(const Code& code) const { | 10836 void LibraryPrefix::RegisterDependentCode(const Code& code) const { |
10825 ASSERT(is_deferred_load()); | 10837 ASSERT(is_deferred_load()); |
10826 ASSERT(!is_loaded()); | 10838 ASSERT(!is_loaded()); |
10827 PrefixDependentArray a(*this); | 10839 PrefixDependentArray a(*this); |
(...skipping 6216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
17044 return "Number"; | 17056 return "Number"; |
17045 } | 17057 } |
17046 | 17058 |
17047 | 17059 |
17048 void Number::PrintJSONImpl(JSONStream* stream, bool ref) const { | 17060 void Number::PrintJSONImpl(JSONStream* stream, bool ref) const { |
17049 UNREACHABLE(); | 17061 UNREACHABLE(); |
17050 } | 17062 } |
17051 | 17063 |
17052 | 17064 |
17053 const char* Integer::ToCString() const { | 17065 const char* Integer::ToCString() const { |
17054 // Integer is an interface. No instances of Integer should exist. | 17066 // Integer is an interface. No instances of Integer should exist except null. |
17055 UNREACHABLE(); | 17067 ASSERT(IsNull()); |
17056 return "Integer"; | 17068 return "NULL Integer"; |
17057 } | 17069 } |
17058 | 17070 |
17059 | 17071 |
17060 void Integer::PrintJSONImpl(JSONStream* stream, bool ref) const { | 17072 void Integer::PrintJSONImpl(JSONStream* stream, bool ref) const { |
17061 JSONObject jsobj(stream); | 17073 JSONObject jsobj(stream); |
17062 PrintSharedInstanceJSON(&jsobj, ref); | 17074 PrintSharedInstanceJSON(&jsobj, ref); |
17063 jsobj.AddProperty("kind", "Int"); | 17075 jsobj.AddProperty("kind", "Int"); |
17064 jsobj.AddServiceId(*this); | 17076 jsobj.AddServiceId(*this); |
17065 jsobj.AddProperty("valueAsString", ToCString()); | 17077 jsobj.AddProperty("valueAsString", ToCString()); |
17066 } | 17078 } |
(...skipping 4862 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
21929 return tag_label.ToCString(); | 21941 return tag_label.ToCString(); |
21930 } | 21942 } |
21931 | 21943 |
21932 | 21944 |
21933 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 21945 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
21934 Instance::PrintJSONImpl(stream, ref); | 21946 Instance::PrintJSONImpl(stream, ref); |
21935 } | 21947 } |
21936 | 21948 |
21937 | 21949 |
21938 } // namespace dart | 21950 } // namespace dart |
OLD | NEW |