Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: runtime/vm/object.cc

Issue 1423063005: VM: Speculative inlining in precompiled code. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: addressed comments Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/object.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698