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

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

Issue 1310463005: - Ensure that HandleScope is initialized with a thread. (Remove (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Address review comments Created 5 years, 3 months 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/native_api_impl.cc ('k') | runtime/vm/object_graph.cc » ('j') | 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 9009 matching lines...) Expand 10 before | Expand all | Expand 10 after
9020 }; 9020 };
9021 9021
9022 9022
9023 typedef UnorderedHashSet<LibraryUrlTraits> LibraryLoadErrorSet; 9023 typedef UnorderedHashSet<LibraryUrlTraits> LibraryLoadErrorSet;
9024 9024
9025 9025
9026 RawInstance* Library::TransitiveLoadError() const { 9026 RawInstance* Library::TransitiveLoadError() const {
9027 if (LoadError() != Instance::null()) { 9027 if (LoadError() != Instance::null()) {
9028 return LoadError(); 9028 return LoadError();
9029 } 9029 }
9030 Isolate* isolate = Isolate::Current(); 9030 Thread* thread = Thread::Current();
9031 Isolate* isolate = thread->isolate();
9031 ObjectStore* object_store = isolate->object_store(); 9032 ObjectStore* object_store = isolate->object_store();
9032 LibraryLoadErrorSet set(object_store->library_load_error_table()); 9033 LibraryLoadErrorSet set(object_store->library_load_error_table());
9033 bool present = false; 9034 bool present = false;
9034 if (set.GetOrNull(*this, &present) != Object::null()) { 9035 if (set.GetOrNull(*this, &present) != Object::null()) {
9035 object_store->set_library_load_error_table(set.Release()); 9036 object_store->set_library_load_error_table(set.Release());
9036 return Instance::null(); 9037 return Instance::null();
9037 } 9038 }
9038 // Ensure we don't repeatedly visit the same library again. 9039 // Ensure we don't repeatedly visit the same library again.
9039 set.Insert(*this); 9040 set.Insert(*this);
9040 object_store->set_library_load_error_table(set.Release()); 9041 object_store->set_library_load_error_table(set.Release());
9041 intptr_t num_imp = num_imports(); 9042 intptr_t num_imp = num_imports();
9042 Library& lib = Library::Handle(isolate); 9043 Library& lib = Library::Handle(isolate);
9043 Instance& error = Instance::Handle(isolate); 9044 Instance& error = Instance::Handle(isolate);
9044 for (intptr_t i = 0; i < num_imp; i++) { 9045 for (intptr_t i = 0; i < num_imp; i++) {
9045 HANDLESCOPE(isolate); 9046 HANDLESCOPE(thread);
9046 lib = ImportLibraryAt(i); 9047 lib = ImportLibraryAt(i);
9047 error = lib.TransitiveLoadError(); 9048 error = lib.TransitiveLoadError();
9048 if (!error.IsNull()) { 9049 if (!error.IsNull()) {
9049 break; 9050 break;
9050 } 9051 }
9051 } 9052 }
9052 return error.raw(); 9053 return error.raw();
9053 } 9054 }
9054 9055
9055 9056
(...skipping 1249 matching lines...) Expand 10 before | Expand all | Expand 10 after
10305 const Array& imports = Array::Handle(this->imports()); 10306 const Array& imports = Array::Handle(this->imports());
10306 Namespace& import = Namespace::Handle(); 10307 Namespace& import = Namespace::Handle();
10307 import ^= imports.At(index); 10308 import ^= imports.At(index);
10308 return import.library(); 10309 return import.library();
10309 } 10310 }
10310 return Library::null(); 10311 return Library::null();
10311 } 10312 }
10312 10313
10313 10314
10314 RawInstance* LibraryPrefix::LoadError() const { 10315 RawInstance* LibraryPrefix::LoadError() const {
10315 Isolate* isolate = Isolate::Current(); 10316 Thread* thread = Thread::Current();
10317 Isolate* isolate = thread->isolate();
10316 ObjectStore* object_store = isolate->object_store(); 10318 ObjectStore* object_store = isolate->object_store();
10317 GrowableObjectArray& libs = 10319 GrowableObjectArray& libs =
10318 GrowableObjectArray::Handle(isolate, object_store->libraries()); 10320 GrowableObjectArray::Handle(isolate, object_store->libraries());
10319 ASSERT(!libs.IsNull()); 10321 ASSERT(!libs.IsNull());
10320 LibraryLoadErrorSet set(HashTables::New<LibraryLoadErrorSet>(libs.Length())); 10322 LibraryLoadErrorSet set(HashTables::New<LibraryLoadErrorSet>(libs.Length()));
10321 object_store->set_library_load_error_table(set.Release()); 10323 object_store->set_library_load_error_table(set.Release());
10322 Library& lib = Library::Handle(isolate); 10324 Library& lib = Library::Handle(isolate);
10323 Instance& error = Instance::Handle(isolate); 10325 Instance& error = Instance::Handle(isolate);
10324 for (int32_t i = 0; i < num_imports(); i++) { 10326 for (int32_t i = 0; i < num_imports(); i++) {
10325 lib = GetLibrary(i); 10327 lib = GetLibrary(i);
10326 ASSERT(!lib.IsNull()); 10328 ASSERT(!lib.IsNull());
10327 HANDLESCOPE(isolate); 10329 HANDLESCOPE(thread);
10328 error = lib.TransitiveLoadError(); 10330 error = lib.TransitiveLoadError();
10329 if (!error.IsNull()) { 10331 if (!error.IsNull()) {
10330 break; 10332 break;
10331 } 10333 }
10332 } 10334 }
10333 object_store->set_library_load_error_table(Object::empty_array()); 10335 object_store->set_library_load_error_table(Object::empty_array());
10334 return error.raw(); 10336 return error.raw();
10335 } 10337 }
10336 10338
10337 10339
(...skipping 3843 matching lines...) Expand 10 before | Expand all | Expand 10 after
14181 14183
14182 14184
14183 void UnhandledException::set_stacktrace(const Instance& stacktrace) const { 14185 void UnhandledException::set_stacktrace(const Instance& stacktrace) const {
14184 StorePointer(&raw_ptr()->stacktrace_, stacktrace.raw()); 14186 StorePointer(&raw_ptr()->stacktrace_, stacktrace.raw());
14185 } 14187 }
14186 14188
14187 14189
14188 const char* UnhandledException::ToErrorCString() const { 14190 const char* UnhandledException::ToErrorCString() const {
14189 Thread* thread = Thread::Current(); 14191 Thread* thread = Thread::Current();
14190 Isolate* isolate = thread->isolate(); 14192 Isolate* isolate = thread->isolate();
14191 HANDLESCOPE(isolate); 14193 HANDLESCOPE(thread);
14192 Object& strtmp = Object::Handle(); 14194 Object& strtmp = Object::Handle();
14193 const char* exc_str; 14195 const char* exc_str;
14194 if (exception() == isolate->object_store()->out_of_memory()) { 14196 if (exception() == isolate->object_store()->out_of_memory()) {
14195 exc_str = "Out of Memory"; 14197 exc_str = "Out of Memory";
14196 } else if (exception() == isolate->object_store()->stack_overflow()) { 14198 } else if (exception() == isolate->object_store()->stack_overflow()) {
14197 exc_str = "Stack Overflow"; 14199 exc_str = "Stack Overflow";
14198 } else { 14200 } else {
14199 const Instance& exc = Instance::Handle(exception()); 14201 const Instance& exc = Instance::Handle(exception());
14200 strtmp = DartLibraryCalls::ToString(exc); 14202 strtmp = DartLibraryCalls::ToString(exc);
14201 if (!strtmp.IsError()) { 14203 if (!strtmp.IsError()) {
(...skipping 7288 matching lines...) Expand 10 before | Expand all | Expand 10 after
21490 return tag_label.ToCString(); 21492 return tag_label.ToCString();
21491 } 21493 }
21492 21494
21493 21495
21494 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { 21496 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const {
21495 Instance::PrintJSONImpl(stream, ref); 21497 Instance::PrintJSONImpl(stream, ref);
21496 } 21498 }
21497 21499
21498 21500
21499 } // namespace dart 21501 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/native_api_impl.cc ('k') | runtime/vm/object_graph.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698