| 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 #ifndef VM_OBJECT_H_ | 5 #ifndef VM_OBJECT_H_ |
| 6 #define VM_OBJECT_H_ | 6 #define VM_OBJECT_H_ |
| 7 | 7 |
| 8 #include "include/dart_api.h" | 8 #include "include/dart_api.h" |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "platform/utils.h" | 10 #include "platform/utils.h" |
| (...skipping 3739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3750 virtual const char* ToErrorCString() const; | 3750 virtual const char* ToErrorCString() const; |
| 3751 | 3751 |
| 3752 private: | 3752 private: |
| 3753 HEAP_OBJECT_IMPLEMENTATION(Error, Object); | 3753 HEAP_OBJECT_IMPLEMENTATION(Error, Object); |
| 3754 }; | 3754 }; |
| 3755 | 3755 |
| 3756 | 3756 |
| 3757 class ApiError : public Error { | 3757 class ApiError : public Error { |
| 3758 public: | 3758 public: |
| 3759 RawString* message() const { return raw_ptr()->message_; } | 3759 RawString* message() const { return raw_ptr()->message_; } |
| 3760 static intptr_t message_offset() { | |
| 3761 return OFFSET_OF(RawApiError, message_); | |
| 3762 } | |
| 3763 | 3760 |
| 3764 static intptr_t InstanceSize() { | 3761 static intptr_t InstanceSize() { |
| 3765 return RoundedAllocationSize(sizeof(RawApiError)); | 3762 return RoundedAllocationSize(sizeof(RawApiError)); |
| 3766 } | 3763 } |
| 3767 | 3764 |
| 3768 static RawApiError* New(const String& message, | 3765 static RawApiError* New(const String& message, |
| 3769 Heap::Space space = Heap::kNew); | 3766 Heap::Space space = Heap::kNew); |
| 3770 | 3767 |
| 3771 virtual const char* ToErrorCString() const; | 3768 virtual const char* ToErrorCString() const; |
| 3772 | 3769 |
| 3773 private: | 3770 private: |
| 3774 void set_message(const String& message) const; | 3771 void set_message(const String& message) const; |
| 3775 | 3772 |
| 3776 static RawApiError* New(); | 3773 static RawApiError* New(); |
| 3777 | 3774 |
| 3778 FINAL_HEAP_OBJECT_IMPLEMENTATION(ApiError, Error); | 3775 FINAL_HEAP_OBJECT_IMPLEMENTATION(ApiError, Error); |
| 3779 friend class Class; | 3776 friend class Class; |
| 3780 }; | 3777 }; |
| 3781 | 3778 |
| 3782 | 3779 |
| 3783 class LanguageError : public Error { | 3780 class LanguageError : public Error { |
| 3784 public: | 3781 public: |
| 3785 RawString* message() const { return raw_ptr()->message_; } | 3782 enum Kind { |
| 3786 static intptr_t message_offset() { | 3783 kWarning, |
| 3787 return OFFSET_OF(RawLanguageError, message_); | 3784 kError, |
| 3788 } | 3785 kMalformedType, |
| 3786 kMalboundedType, |
| 3787 }; |
| 3788 |
| 3789 // Build, cache, and return formatted message. |
| 3790 RawString* FormatMessage() const; |
| 3789 | 3791 |
| 3790 static intptr_t InstanceSize() { | 3792 static intptr_t InstanceSize() { |
| 3791 return RoundedAllocationSize(sizeof(RawLanguageError)); | 3793 return RoundedAllocationSize(sizeof(RawLanguageError)); |
| 3792 } | 3794 } |
| 3793 | 3795 |
| 3794 static RawLanguageError* New(const String& message, | 3796 // A null script means no source and a negative token_pos means no position. |
| 3797 static RawLanguageError* NewFormatted(const Error& prev_error, |
| 3798 const Script& script, |
| 3799 intptr_t token_pos, |
| 3800 Kind kind, |
| 3801 Heap::Space space, |
| 3802 const char* format, ...) |
| 3803 PRINTF_ATTRIBUTE(6, 7); |
| 3804 |
| 3805 static RawLanguageError* NewFormattedV(const Error& prev_error, |
| 3806 const Script& script, |
| 3807 intptr_t token_pos, |
| 3808 Kind kind, |
| 3809 Heap::Space space, |
| 3810 const char* format, va_list args); |
| 3811 |
| 3812 static RawLanguageError* New(const String& formatted_message, |
| 3795 Heap::Space space = Heap::kNew); | 3813 Heap::Space space = Heap::kNew); |
| 3796 | 3814 |
| 3797 virtual const char* ToErrorCString() const; | 3815 virtual const char* ToErrorCString() const; |
| 3798 | 3816 |
| 3799 private: | 3817 private: |
| 3800 void set_message(const String& message) const; | 3818 RawError* previous_error() const { |
| 3819 return raw_ptr()->previous_error_; |
| 3820 } |
| 3821 void set_previous_error(const Error& value) const; |
| 3822 |
| 3823 RawScript* script() const { return raw_ptr()->script_; } |
| 3824 void set_script(const Script& value) const; |
| 3825 |
| 3826 intptr_t token_pos() const { return raw_ptr()->token_pos_; } |
| 3827 void set_token_pos(intptr_t value) const; |
| 3828 |
| 3829 Kind kind() const { return static_cast<Kind>(raw_ptr()->kind_); } |
| 3830 void set_kind(uint8_t value) const; |
| 3831 |
| 3832 RawString* message() const { return raw_ptr()->message_; } |
| 3833 void set_message(const String& value) const; |
| 3834 |
| 3835 RawString* formatted_message() const { return raw_ptr()->formatted_message_; } |
| 3836 void set_formatted_message(const String& value) const; |
| 3801 | 3837 |
| 3802 static RawLanguageError* New(); | 3838 static RawLanguageError* New(); |
| 3803 | 3839 |
| 3804 FINAL_HEAP_OBJECT_IMPLEMENTATION(LanguageError, Error); | 3840 FINAL_HEAP_OBJECT_IMPLEMENTATION(LanguageError, Error); |
| 3805 friend class Class; | 3841 friend class Class; |
| 3806 }; | 3842 }; |
| 3807 | 3843 |
| 3808 | 3844 |
| 3809 class UnhandledException : public Error { | 3845 class UnhandledException : public Error { |
| 3810 public: | 3846 public: |
| (...skipping 22 matching lines...) Expand all Loading... |
| 3833 void set_stacktrace(const Instance& stacktrace) const; | 3869 void set_stacktrace(const Instance& stacktrace) const; |
| 3834 | 3870 |
| 3835 FINAL_HEAP_OBJECT_IMPLEMENTATION(UnhandledException, Error); | 3871 FINAL_HEAP_OBJECT_IMPLEMENTATION(UnhandledException, Error); |
| 3836 friend class Class; | 3872 friend class Class; |
| 3837 }; | 3873 }; |
| 3838 | 3874 |
| 3839 | 3875 |
| 3840 class UnwindError : public Error { | 3876 class UnwindError : public Error { |
| 3841 public: | 3877 public: |
| 3842 RawString* message() const { return raw_ptr()->message_; } | 3878 RawString* message() const { return raw_ptr()->message_; } |
| 3843 static intptr_t message_offset() { | |
| 3844 return OFFSET_OF(RawUnwindError, message_); | |
| 3845 } | |
| 3846 | 3879 |
| 3847 static intptr_t InstanceSize() { | 3880 static intptr_t InstanceSize() { |
| 3848 return RoundedAllocationSize(sizeof(RawUnwindError)); | 3881 return RoundedAllocationSize(sizeof(RawUnwindError)); |
| 3849 } | 3882 } |
| 3850 | 3883 |
| 3851 static RawUnwindError* New(const String& message, | 3884 static RawUnwindError* New(const String& message, |
| 3852 Heap::Space space = Heap::kNew); | 3885 Heap::Space space = Heap::kNew); |
| 3853 | 3886 |
| 3854 virtual const char* ToErrorCString() const; | 3887 virtual const char* ToErrorCString() const; |
| 3855 | 3888 |
| (...skipping 2525 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6381 | 6414 |
| 6382 | 6415 |
| 6383 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, | 6416 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, |
| 6384 intptr_t index) { | 6417 intptr_t index) { |
| 6385 return array.At((index * kEntryLength) + kTargetFunctionIndex); | 6418 return array.At((index * kEntryLength) + kTargetFunctionIndex); |
| 6386 } | 6419 } |
| 6387 | 6420 |
| 6388 } // namespace dart | 6421 } // namespace dart |
| 6389 | 6422 |
| 6390 #endif // VM_OBJECT_H_ | 6423 #endif // VM_OBJECT_H_ |
| OLD | NEW |