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 3290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3301 bool HasDeoptReasons() const { return DeoptReasons() != 0; } | 3301 bool HasDeoptReasons() const { return DeoptReasons() != 0; } |
3302 uint32_t DeoptReasons() const; | 3302 uint32_t DeoptReasons() const; |
3303 void SetDeoptReasons(uint32_t reasons) const; | 3303 void SetDeoptReasons(uint32_t reasons) const; |
3304 | 3304 |
3305 bool HasDeoptReason(ICData::DeoptReasonId reason) const; | 3305 bool HasDeoptReason(ICData::DeoptReasonId reason) const; |
3306 void AddDeoptReason(ICData::DeoptReasonId reason) const; | 3306 void AddDeoptReason(ICData::DeoptReasonId reason) const; |
3307 | 3307 |
3308 bool IssuedJSWarning() const; | 3308 bool IssuedJSWarning() const; |
3309 void SetIssuedJSWarning() const; | 3309 void SetIssuedJSWarning() const; |
3310 | 3310 |
| 3311 // Return true if the target function of this IC data may check for (and |
| 3312 // possibly issue) a Javascript compatibility warning. |
| 3313 bool MayCheckForJSWarning() const; |
| 3314 |
3311 bool IsClosureCall() const; | 3315 bool IsClosureCall() const; |
3312 void SetIsClosureCall() const; | 3316 void SetIsClosureCall() const; |
3313 | 3317 |
3314 intptr_t NumberOfChecks() const; | 3318 intptr_t NumberOfChecks() const; |
3315 | 3319 |
3316 static intptr_t InstanceSize() { | 3320 static intptr_t InstanceSize() { |
3317 return RoundedAllocationSize(sizeof(RawICData)); | 3321 return RoundedAllocationSize(sizeof(RawICData)); |
3318 } | 3322 } |
3319 | 3323 |
3320 static intptr_t target_name_offset() { | 3324 static intptr_t target_name_offset() { |
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4008 }; | 4012 }; |
4009 | 4013 |
4010 | 4014 |
4011 class LanguageError : public Error { | 4015 class LanguageError : public Error { |
4012 public: | 4016 public: |
4013 enum Kind { | 4017 enum Kind { |
4014 kWarning, | 4018 kWarning, |
4015 kError, | 4019 kError, |
4016 kMalformedType, | 4020 kMalformedType, |
4017 kMalboundedType, | 4021 kMalboundedType, |
| 4022 kBailout, |
4018 }; | 4023 }; |
4019 | 4024 |
4020 Kind kind() const { return static_cast<Kind>(raw_ptr()->kind_); } | 4025 Kind kind() const { return static_cast<Kind>(raw_ptr()->kind_); } |
4021 | 4026 |
4022 // Build, cache, and return formatted message. | 4027 // Build, cache, and return formatted message. |
4023 RawString* FormatMessage() const; | 4028 RawString* FormatMessage() const; |
4024 | 4029 |
4025 static intptr_t InstanceSize() { | 4030 static intptr_t InstanceSize() { |
4026 return RoundedAllocationSize(sizeof(RawLanguageError)); | 4031 return RoundedAllocationSize(sizeof(RawLanguageError)); |
4027 } | 4032 } |
4028 | 4033 |
4029 // A null script means no source and a negative token_pos means no position. | 4034 // A null script means no source and a negative token_pos means no position. |
4030 static RawLanguageError* NewFormatted(const Error& prev_error, | 4035 static RawLanguageError* NewFormatted(const Error& prev_error, |
4031 const Script& script, | 4036 const Script& script, |
4032 intptr_t token_pos, | 4037 intptr_t token_pos, |
4033 Kind kind, | 4038 Kind kind, |
4034 Heap::Space space, | 4039 Heap::Space space, |
4035 const char* format, ...) | 4040 const char* format, ...) |
4036 PRINTF_ATTRIBUTE(6, 7); | 4041 PRINTF_ATTRIBUTE(6, 7); |
4037 | 4042 |
4038 static RawLanguageError* NewFormattedV(const Error& prev_error, | 4043 static RawLanguageError* NewFormattedV(const Error& prev_error, |
4039 const Script& script, | 4044 const Script& script, |
4040 intptr_t token_pos, | 4045 intptr_t token_pos, |
4041 Kind kind, | 4046 Kind kind, |
4042 Heap::Space space, | 4047 Heap::Space space, |
4043 const char* format, va_list args); | 4048 const char* format, va_list args); |
4044 | 4049 |
4045 static RawLanguageError* New(const String& formatted_message, | 4050 static RawLanguageError* New(const String& formatted_message, |
| 4051 Kind kind = kError, |
4046 Heap::Space space = Heap::kNew); | 4052 Heap::Space space = Heap::kNew); |
4047 | 4053 |
4048 virtual const char* ToErrorCString() const; | 4054 virtual const char* ToErrorCString() const; |
4049 | 4055 |
4050 private: | 4056 private: |
4051 RawError* previous_error() const { | 4057 RawError* previous_error() const { |
4052 return raw_ptr()->previous_error_; | 4058 return raw_ptr()->previous_error_; |
4053 } | 4059 } |
4054 void set_previous_error(const Error& value) const; | 4060 void set_previous_error(const Error& value) const; |
4055 | 4061 |
(...skipping 2807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6863 }; | 6869 }; |
6864 | 6870 |
6865 | 6871 |
6866 class UserTag : public Instance { | 6872 class UserTag : public Instance { |
6867 public: | 6873 public: |
6868 uword tag() const { return raw_ptr()->tag(); } | 6874 uword tag() const { return raw_ptr()->tag(); } |
6869 void set_tag(uword t) const { | 6875 void set_tag(uword t) const { |
6870 ASSERT(t >= UserTags::kUserTagIdOffset); | 6876 ASSERT(t >= UserTags::kUserTagIdOffset); |
6871 ASSERT(t < UserTags::kUserTagIdOffset + UserTags::kMaxUserTags); | 6877 ASSERT(t < UserTags::kUserTagIdOffset + UserTags::kMaxUserTags); |
6872 raw_ptr()->tag_ = t; | 6878 raw_ptr()->tag_ = t; |
6873 }; | 6879 } |
6874 static intptr_t tag_offset() { return OFFSET_OF(RawUserTag, tag_); } | 6880 static intptr_t tag_offset() { return OFFSET_OF(RawUserTag, tag_); } |
6875 | 6881 |
6876 RawString* label() const { | 6882 RawString* label() const { |
6877 return raw_ptr()->label_; | 6883 return raw_ptr()->label_; |
6878 } | 6884 } |
6879 | 6885 |
6880 void MakeActive() const; | 6886 void MakeActive() const; |
6881 | 6887 |
6882 static intptr_t InstanceSize() { | 6888 static intptr_t InstanceSize() { |
6883 return RoundedAllocationSize(sizeof(RawUserTag)); | 6889 return RoundedAllocationSize(sizeof(RawUserTag)); |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7036 | 7042 |
7037 | 7043 |
7038 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, | 7044 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, |
7039 intptr_t index) { | 7045 intptr_t index) { |
7040 return array.At((index * kEntryLength) + kTargetFunctionIndex); | 7046 return array.At((index * kEntryLength) + kTargetFunctionIndex); |
7041 } | 7047 } |
7042 | 7048 |
7043 } // namespace dart | 7049 } // namespace dart |
7044 | 7050 |
7045 #endif // VM_OBJECT_H_ | 7051 #endif // VM_OBJECT_H_ |
OLD | NEW |