| 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 2324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2335 friend class Class; | 2335 friend class Class; |
| 2336 }; | 2336 }; |
| 2337 | 2337 |
| 2338 | 2338 |
| 2339 class Stackmap : public Object { | 2339 class Stackmap : public Object { |
| 2340 public: | 2340 public: |
| 2341 static const intptr_t kNoMaximum = -1; | 2341 static const intptr_t kNoMaximum = -1; |
| 2342 static const intptr_t kNoMinimum = -1; | 2342 static const intptr_t kNoMinimum = -1; |
| 2343 | 2343 |
| 2344 bool IsObject(intptr_t index) const { | 2344 bool IsObject(intptr_t index) const { |
| 2345 return InRange(index) && GetBit(index); | 2345 ASSERT(InRange(index)); |
| 2346 return GetBit(index); |
| 2346 } | 2347 } |
| 2347 | 2348 |
| 2348 RawCode* Code() const { return raw_ptr()->code_; } | 2349 RawCode* Code() const { return raw_ptr()->code_; } |
| 2349 void SetCode(const dart::Code& code) const; | 2350 void SetCode(const dart::Code& code) const; |
| 2350 | 2351 |
| 2351 intptr_t Length() const { return raw_ptr()->length_; } | 2352 intptr_t Length() const { return raw_ptr()->length_; } |
| 2352 | 2353 |
| 2353 uword PC() const { return raw_ptr()->pc_; } | 2354 uword PC() const { return raw_ptr()->pc_; } |
| 2354 void SetPC(uword value) const { raw_ptr()->pc_ = value; } | 2355 void SetPC(uword value) const { raw_ptr()->pc_ = value; } |
| 2355 | 2356 |
| 2356 static const intptr_t kMaxLengthInBytes = kSmiMax; | 2357 static const intptr_t kMaxLengthInBytes = kSmiMax; |
| 2357 | 2358 |
| 2358 static intptr_t InstanceSize() { | 2359 static intptr_t InstanceSize() { |
| 2359 ASSERT(sizeof(RawStackmap) == OFFSET_OF(RawStackmap, data_)); | 2360 ASSERT(sizeof(RawStackmap) == OFFSET_OF(RawStackmap, data_)); |
| 2360 return 0; | 2361 return 0; |
| 2361 } | 2362 } |
| 2362 static intptr_t InstanceSize(intptr_t length) { | 2363 static intptr_t InstanceSize(intptr_t length) { |
| 2363 ASSERT(length >= 0); | 2364 ASSERT(length >= 0); |
| 2364 // The stackmap payload is in an array of bytes. | 2365 // The stackmap payload is in an array of bytes. |
| 2365 intptr_t payload_size = | 2366 intptr_t payload_size = |
| 2366 Utils::RoundUp(length, kBitsPerByte) / kBitsPerByte; | 2367 Utils::RoundUp(length, kBitsPerByte) / kBitsPerByte; |
| 2367 return RoundedAllocationSize(sizeof(RawStackmap) + payload_size); | 2368 return RoundedAllocationSize(sizeof(RawStackmap) + payload_size); |
| 2368 } | 2369 } |
| 2369 static RawStackmap* New(intptr_t pc_offset, | 2370 static RawStackmap* New(intptr_t pc_offset, BitmapBuilder* bmap); |
| 2370 intptr_t length, | |
| 2371 BitmapBuilder* bmap); | |
| 2372 | 2371 |
| 2373 private: | 2372 private: |
| 2374 void SetLength(intptr_t length) const { raw_ptr()->length_ = length; } | 2373 void SetLength(intptr_t length) const { raw_ptr()->length_ = length; } |
| 2375 | 2374 |
| 2376 bool InRange(intptr_t index) const { return index < Length(); } | 2375 bool InRange(intptr_t index) const { return index < Length(); } |
| 2377 | 2376 |
| 2378 bool GetBit(intptr_t bit_index) const; | 2377 bool GetBit(intptr_t bit_index) const; |
| 2379 void SetBit(intptr_t bit_index, bool value) const; | 2378 void SetBit(intptr_t bit_index, bool value) const; |
| 2380 | 2379 |
| 2381 HEAP_OBJECT_IMPLEMENTATION(Stackmap, Object); | 2380 HEAP_OBJECT_IMPLEMENTATION(Stackmap, Object); |
| (...skipping 3135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5517 if (this->CharAt(i) != str.CharAt(begin_index + i)) { | 5516 if (this->CharAt(i) != str.CharAt(begin_index + i)) { |
| 5518 return false; | 5517 return false; |
| 5519 } | 5518 } |
| 5520 } | 5519 } |
| 5521 return true; | 5520 return true; |
| 5522 } | 5521 } |
| 5523 | 5522 |
| 5524 } // namespace dart | 5523 } // namespace dart |
| 5525 | 5524 |
| 5526 #endif // VM_OBJECT_H_ | 5525 #endif // VM_OBJECT_H_ |
| OLD | NEW |