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 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 Array* Object::extractor_parameter_names_ = NULL; | 107 Array* Object::extractor_parameter_names_ = NULL; |
108 Instance* Object::sentinel_ = NULL; | 108 Instance* Object::sentinel_ = NULL; |
109 Instance* Object::transition_sentinel_ = NULL; | 109 Instance* Object::transition_sentinel_ = NULL; |
110 Instance* Object::unknown_constant_ = NULL; | 110 Instance* Object::unknown_constant_ = NULL; |
111 Instance* Object::non_constant_ = NULL; | 111 Instance* Object::non_constant_ = NULL; |
112 Bool* Object::bool_true_ = NULL; | 112 Bool* Object::bool_true_ = NULL; |
113 Bool* Object::bool_false_ = NULL; | 113 Bool* Object::bool_false_ = NULL; |
114 Smi* Object::smi_illegal_cid_ = NULL; | 114 Smi* Object::smi_illegal_cid_ = NULL; |
115 LanguageError* Object::snapshot_writer_error_ = NULL; | 115 LanguageError* Object::snapshot_writer_error_ = NULL; |
116 LanguageError* Object::branch_offset_error_ = NULL; | 116 LanguageError* Object::branch_offset_error_ = NULL; |
| 117 LanguageError* Object::speculative_inlining_error_ = NULL; |
117 Array* Object::vm_isolate_snapshot_object_table_ = NULL; | 118 Array* Object::vm_isolate_snapshot_object_table_ = NULL; |
118 Type* Object::dynamic_type_ = NULL; | 119 Type* Object::dynamic_type_ = NULL; |
119 Type* Object::void_type_ = NULL; | 120 Type* Object::void_type_ = NULL; |
120 | 121 |
121 RawObject* Object::null_ = reinterpret_cast<RawObject*>(RAW_NULL); | 122 RawObject* Object::null_ = reinterpret_cast<RawObject*>(RAW_NULL); |
122 RawClass* Object::class_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 123 RawClass* Object::class_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
123 RawClass* Object::dynamic_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 124 RawClass* Object::dynamic_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
124 RawClass* Object::void_class_ = reinterpret_cast<RawClass*>(RAW_NULL); | 125 RawClass* Object::void_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
125 RawClass* Object::unresolved_class_class_ = | 126 RawClass* Object::unresolved_class_class_ = |
126 reinterpret_cast<RawClass*>(RAW_NULL); | 127 reinterpret_cast<RawClass*>(RAW_NULL); |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 extractor_parameter_names_ = Array::ReadOnlyHandle(); | 481 extractor_parameter_names_ = Array::ReadOnlyHandle(); |
481 sentinel_ = Instance::ReadOnlyHandle(); | 482 sentinel_ = Instance::ReadOnlyHandle(); |
482 transition_sentinel_ = Instance::ReadOnlyHandle(); | 483 transition_sentinel_ = Instance::ReadOnlyHandle(); |
483 unknown_constant_ = Instance::ReadOnlyHandle(); | 484 unknown_constant_ = Instance::ReadOnlyHandle(); |
484 non_constant_ = Instance::ReadOnlyHandle(); | 485 non_constant_ = Instance::ReadOnlyHandle(); |
485 bool_true_ = Bool::ReadOnlyHandle(); | 486 bool_true_ = Bool::ReadOnlyHandle(); |
486 bool_false_ = Bool::ReadOnlyHandle(); | 487 bool_false_ = Bool::ReadOnlyHandle(); |
487 smi_illegal_cid_ = Smi::ReadOnlyHandle(); | 488 smi_illegal_cid_ = Smi::ReadOnlyHandle(); |
488 snapshot_writer_error_ = LanguageError::ReadOnlyHandle(); | 489 snapshot_writer_error_ = LanguageError::ReadOnlyHandle(); |
489 branch_offset_error_ = LanguageError::ReadOnlyHandle(); | 490 branch_offset_error_ = LanguageError::ReadOnlyHandle(); |
| 491 speculative_inlining_error_ = LanguageError::ReadOnlyHandle(); |
490 vm_isolate_snapshot_object_table_ = Array::ReadOnlyHandle(); | 492 vm_isolate_snapshot_object_table_ = Array::ReadOnlyHandle(); |
491 dynamic_type_ = Type::ReadOnlyHandle(); | 493 dynamic_type_ = Type::ReadOnlyHandle(); |
492 void_type_ = Type::ReadOnlyHandle(); | 494 void_type_ = Type::ReadOnlyHandle(); |
493 | 495 |
494 *null_object_ = Object::null(); | 496 *null_object_ = Object::null(); |
495 *null_array_ = Array::null(); | 497 *null_array_ = Array::null(); |
496 *null_string_ = String::null(); | 498 *null_string_ = String::null(); |
497 *null_instance_ = Instance::null(); | 499 *null_instance_ = Instance::null(); |
498 *null_type_arguments_ = TypeArguments::null(); | 500 *null_type_arguments_ = TypeArguments::null(); |
499 | 501 |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
823 | 825 |
824 String& error_str = String::Handle(); | 826 String& error_str = String::Handle(); |
825 error_str = String::New("SnapshotWriter Error", Heap::kOld); | 827 error_str = String::New("SnapshotWriter Error", Heap::kOld); |
826 *snapshot_writer_error_ = LanguageError::New(error_str, | 828 *snapshot_writer_error_ = LanguageError::New(error_str, |
827 Report::kError, | 829 Report::kError, |
828 Heap::kOld); | 830 Heap::kOld); |
829 error_str = String::New("Branch offset overflow", Heap::kOld); | 831 error_str = String::New("Branch offset overflow", Heap::kOld); |
830 *branch_offset_error_ = LanguageError::New(error_str, | 832 *branch_offset_error_ = LanguageError::New(error_str, |
831 Report::kBailout, | 833 Report::kBailout, |
832 Heap::kOld); | 834 Heap::kOld); |
| 835 error_str = String::New("Speculative inlining failed", Heap::kOld); |
| 836 *speculative_inlining_error_ = LanguageError::New(error_str, |
| 837 Report::kBailout, |
| 838 Heap::kOld); |
833 | 839 |
834 ASSERT(!null_object_->IsSmi()); | 840 ASSERT(!null_object_->IsSmi()); |
835 ASSERT(!null_array_->IsSmi()); | 841 ASSERT(!null_array_->IsSmi()); |
836 ASSERT(null_array_->IsArray()); | 842 ASSERT(null_array_->IsArray()); |
837 ASSERT(!null_string_->IsSmi()); | 843 ASSERT(!null_string_->IsSmi()); |
838 ASSERT(null_string_->IsString()); | 844 ASSERT(null_string_->IsString()); |
839 ASSERT(!null_instance_->IsSmi()); | 845 ASSERT(!null_instance_->IsSmi()); |
840 ASSERT(null_instance_->IsInstance()); | 846 ASSERT(null_instance_->IsInstance()); |
841 ASSERT(!null_type_arguments_->IsSmi()); | 847 ASSERT(!null_type_arguments_->IsSmi()); |
842 ASSERT(null_type_arguments_->IsTypeArguments()); | 848 ASSERT(null_type_arguments_->IsTypeArguments()); |
(...skipping 19 matching lines...) Expand all Loading... |
862 ASSERT(non_constant_->IsInstance()); | 868 ASSERT(non_constant_->IsInstance()); |
863 ASSERT(!bool_true_->IsSmi()); | 869 ASSERT(!bool_true_->IsSmi()); |
864 ASSERT(bool_true_->IsBool()); | 870 ASSERT(bool_true_->IsBool()); |
865 ASSERT(!bool_false_->IsSmi()); | 871 ASSERT(!bool_false_->IsSmi()); |
866 ASSERT(bool_false_->IsBool()); | 872 ASSERT(bool_false_->IsBool()); |
867 ASSERT(smi_illegal_cid_->IsSmi()); | 873 ASSERT(smi_illegal_cid_->IsSmi()); |
868 ASSERT(!snapshot_writer_error_->IsSmi()); | 874 ASSERT(!snapshot_writer_error_->IsSmi()); |
869 ASSERT(snapshot_writer_error_->IsLanguageError()); | 875 ASSERT(snapshot_writer_error_->IsLanguageError()); |
870 ASSERT(!branch_offset_error_->IsSmi()); | 876 ASSERT(!branch_offset_error_->IsSmi()); |
871 ASSERT(branch_offset_error_->IsLanguageError()); | 877 ASSERT(branch_offset_error_->IsLanguageError()); |
| 878 ASSERT(!speculative_inlining_error_->IsSmi()); |
| 879 ASSERT(speculative_inlining_error_->IsLanguageError()); |
872 ASSERT(!vm_isolate_snapshot_object_table_->IsSmi()); | 880 ASSERT(!vm_isolate_snapshot_object_table_->IsSmi()); |
873 ASSERT(vm_isolate_snapshot_object_table_->IsArray()); | 881 ASSERT(vm_isolate_snapshot_object_table_->IsArray()); |
874 } | 882 } |
875 | 883 |
876 | 884 |
877 // An object visitor which will mark all visited objects. This is used to | 885 // An object visitor which will mark all visited objects. This is used to |
878 // premark all objects in the vm_isolate_ heap. | 886 // premark all objects in the vm_isolate_ heap. |
879 class PremarkingVisitor : public ObjectVisitor { | 887 class PremarkingVisitor : public ObjectVisitor { |
880 public: | 888 public: |
881 explicit PremarkingVisitor(Isolate* isolate) : ObjectVisitor(isolate) {} | 889 explicit PremarkingVisitor(Isolate* isolate) : ObjectVisitor(isolate) {} |
(...skipping 21086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
21968 return tag_label.ToCString(); | 21976 return tag_label.ToCString(); |
21969 } | 21977 } |
21970 | 21978 |
21971 | 21979 |
21972 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 21980 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
21973 Instance::PrintJSONImpl(stream, ref); | 21981 Instance::PrintJSONImpl(stream, ref); |
21974 } | 21982 } |
21975 | 21983 |
21976 | 21984 |
21977 } // namespace dart | 21985 } // namespace dart |
OLD | NEW |