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 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 // Allocate and initialize singleton true and false boolean objects. | 693 // Allocate and initialize singleton true and false boolean objects. |
694 cls = Class::New<Bool>(); | 694 cls = Class::New<Bool>(); |
695 isolate->object_store()->set_bool_class(cls); | 695 isolate->object_store()->set_bool_class(cls); |
696 *bool_true_ = Bool::New(true); | 696 *bool_true_ = Bool::New(true); |
697 *bool_false_ = Bool::New(false); | 697 *bool_false_ = Bool::New(false); |
698 | 698 |
699 *smi_illegal_cid_ = Smi::New(kIllegalCid); | 699 *smi_illegal_cid_ = Smi::New(kIllegalCid); |
700 | 700 |
701 String& error_str = String::Handle(); | 701 String& error_str = String::Handle(); |
702 error_str = String::New("SnapshotWriter Error", Heap::kOld); | 702 error_str = String::New("SnapshotWriter Error", Heap::kOld); |
703 *snapshot_writer_error_ = LanguageError::New(error_str, Heap::kOld); | 703 *snapshot_writer_error_ = LanguageError::New(error_str, |
| 704 LanguageError::kError, |
| 705 Heap::kOld); |
704 error_str = String::New("Branch offset overflow", Heap::kOld); | 706 error_str = String::New("Branch offset overflow", Heap::kOld); |
705 *branch_offset_error_ = LanguageError::New(error_str, Heap::kOld); | 707 *branch_offset_error_ = LanguageError::New(error_str, |
| 708 LanguageError::kBailout, |
| 709 Heap::kOld); |
706 | 710 |
707 ASSERT(!null_object_->IsSmi()); | 711 ASSERT(!null_object_->IsSmi()); |
708 ASSERT(!null_array_->IsSmi()); | 712 ASSERT(!null_array_->IsSmi()); |
709 ASSERT(null_array_->IsArray()); | 713 ASSERT(null_array_->IsArray()); |
710 ASSERT(!null_string_->IsSmi()); | 714 ASSERT(!null_string_->IsSmi()); |
711 ASSERT(null_string_->IsString()); | 715 ASSERT(null_string_->IsString()); |
712 ASSERT(!null_instance_->IsSmi()); | 716 ASSERT(!null_instance_->IsSmi()); |
713 ASSERT(null_instance_->IsInstance()); | 717 ASSERT(null_instance_->IsInstance()); |
714 ASSERT(!null_type_arguments_->IsSmi()); | 718 ASSERT(!null_type_arguments_->IsSmi()); |
715 ASSERT(null_type_arguments_->IsTypeArguments()); | 719 ASSERT(null_type_arguments_->IsTypeArguments()); |
(...skipping 7944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8660 | 8664 |
8661 void Library::AddClass(const Class& cls) const { | 8665 void Library::AddClass(const Class& cls) const { |
8662 const String& class_name = String::Handle(cls.Name()); | 8666 const String& class_name = String::Handle(cls.Name()); |
8663 AddObject(cls, class_name); | 8667 AddObject(cls, class_name); |
8664 // Link class to this library. | 8668 // Link class to this library. |
8665 cls.set_library(*this); | 8669 cls.set_library(*this); |
8666 InvalidateResolvedName(class_name); | 8670 InvalidateResolvedName(class_name); |
8667 } | 8671 } |
8668 | 8672 |
8669 static void AddScriptIfUnique(const GrowableObjectArray& scripts, | 8673 static void AddScriptIfUnique(const GrowableObjectArray& scripts, |
8670 Script& candidate) { | 8674 const Script& candidate) { |
8671 if (candidate.IsNull()) { | 8675 if (candidate.IsNull()) { |
8672 return; | 8676 return; |
8673 } | 8677 } |
8674 Script& script_obj = Script::Handle(); | 8678 Script& script_obj = Script::Handle(); |
8675 | 8679 |
8676 for (int i = 0; i < scripts.Length(); i++) { | 8680 for (int i = 0; i < scripts.Length(); i++) { |
8677 script_obj ^= scripts.At(i); | 8681 script_obj ^= scripts.At(i); |
8678 if (script_obj.raw() == candidate.raw()) { | 8682 if (script_obj.raw() == candidate.raw()) { |
8679 // We already have a reference to this script. | 8683 // We already have a reference to this script. |
8680 return; | 8684 return; |
(...skipping 3722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12403 va_start(args, format); | 12407 va_start(args, format); |
12404 RawLanguageError* result = LanguageError::NewFormattedV( | 12408 RawLanguageError* result = LanguageError::NewFormattedV( |
12405 prev_error, script, token_pos, kind, space, format, args); | 12409 prev_error, script, token_pos, kind, space, format, args); |
12406 NoGCScope no_gc; | 12410 NoGCScope no_gc; |
12407 va_end(args); | 12411 va_end(args); |
12408 return result; | 12412 return result; |
12409 } | 12413 } |
12410 | 12414 |
12411 | 12415 |
12412 RawLanguageError* LanguageError::New(const String& formatted_message, | 12416 RawLanguageError* LanguageError::New(const String& formatted_message, |
| 12417 Kind kind, |
12413 Heap::Space space) { | 12418 Heap::Space space) { |
12414 ASSERT(Object::language_error_class() != Class::null()); | 12419 ASSERT(Object::language_error_class() != Class::null()); |
12415 LanguageError& result = LanguageError::Handle(); | 12420 LanguageError& result = LanguageError::Handle(); |
12416 { | 12421 { |
12417 RawObject* raw = Object::Allocate(LanguageError::kClassId, | 12422 RawObject* raw = Object::Allocate(LanguageError::kClassId, |
12418 LanguageError::InstanceSize(), | 12423 LanguageError::InstanceSize(), |
12419 space); | 12424 space); |
12420 NoGCScope no_gc; | 12425 NoGCScope no_gc; |
12421 result ^= raw; | 12426 result ^= raw; |
12422 } | 12427 } |
12423 result.set_formatted_message(formatted_message); | 12428 result.set_formatted_message(formatted_message); |
| 12429 result.set_kind(kind); |
12424 return result.raw(); | 12430 return result.raw(); |
12425 } | 12431 } |
12426 | 12432 |
12427 | 12433 |
12428 void LanguageError::set_previous_error(const Error& value) const { | 12434 void LanguageError::set_previous_error(const Error& value) const { |
12429 StorePointer(&raw_ptr()->previous_error_, value.raw()); | 12435 StorePointer(&raw_ptr()->previous_error_, value.raw()); |
12430 } | 12436 } |
12431 | 12437 |
12432 | 12438 |
12433 void LanguageError::set_script(const Script& value) const { | 12439 void LanguageError::set_script(const Script& value) const { |
(...skipping 25 matching lines...) Expand all Loading... |
12459 RawString* LanguageError::FormatMessage() const { | 12465 RawString* LanguageError::FormatMessage() const { |
12460 if (formatted_message() != String::null()) { | 12466 if (formatted_message() != String::null()) { |
12461 return formatted_message(); | 12467 return formatted_message(); |
12462 } | 12468 } |
12463 const char* message_header; | 12469 const char* message_header; |
12464 switch (kind()) { | 12470 switch (kind()) { |
12465 case kWarning: message_header = "warning"; break; | 12471 case kWarning: message_header = "warning"; break; |
12466 case kError: message_header = "error"; break; | 12472 case kError: message_header = "error"; break; |
12467 case kMalformedType: message_header = "malformed type"; break; | 12473 case kMalformedType: message_header = "malformed type"; break; |
12468 case kMalboundedType: message_header = "malbounded type"; break; | 12474 case kMalboundedType: message_header = "malbounded type"; break; |
| 12475 case kBailout: message_header = "bailout"; break; |
12469 default: message_header = ""; UNREACHABLE(); | 12476 default: message_header = ""; UNREACHABLE(); |
12470 } | 12477 } |
12471 String& result = String::Handle(); | 12478 String& result = String::Handle(); |
12472 String& msg = String::Handle(message()); | 12479 String& msg = String::Handle(message()); |
12473 const Script& scr = Script::Handle(script()); | 12480 const Script& scr = Script::Handle(script()); |
12474 if (!scr.IsNull()) { | 12481 if (!scr.IsNull()) { |
12475 const String& script_url = String::Handle(scr.url()); | 12482 const String& script_url = String::Handle(scr.url()); |
12476 if (token_pos() >= 0) { | 12483 if (token_pos() >= 0) { |
12477 intptr_t line, column; | 12484 intptr_t line, column; |
12478 scr.GetTokenLocation(token_pos(), &line, &column); | 12485 scr.GetTokenLocation(token_pos(), &line, &column); |
(...skipping 6334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
18813 return tag_label.ToCString(); | 18820 return tag_label.ToCString(); |
18814 } | 18821 } |
18815 | 18822 |
18816 | 18823 |
18817 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 18824 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
18818 Instance::PrintJSONImpl(stream, ref); | 18825 Instance::PrintJSONImpl(stream, ref); |
18819 } | 18826 } |
18820 | 18827 |
18821 | 18828 |
18822 } // namespace dart | 18829 } // namespace dart |
OLD | NEW |