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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 #define BASE_OBJECT_IMPLEMENTATION(object, super) \ | 58 #define BASE_OBJECT_IMPLEMENTATION(object, super) \ |
59 public: /* NOLINT */ \ | 59 public: /* NOLINT */ \ |
60 Raw##object* raw() const { return reinterpret_cast<Raw##object*>(raw_); } \ | 60 Raw##object* raw() const { return reinterpret_cast<Raw##object*>(raw_); } \ |
61 bool Is##object() const { return true; } \ | 61 bool Is##object() const { return true; } \ |
62 static object& Handle(Zone* zone, Raw##object* raw_ptr) { \ | 62 static object& Handle(Zone* zone, Raw##object* raw_ptr) { \ |
63 object* obj = \ | 63 object* obj = \ |
64 reinterpret_cast<object*>(VMHandles::AllocateHandle(zone)); \ | 64 reinterpret_cast<object*>(VMHandles::AllocateHandle(zone)); \ |
65 initializeHandle(obj, raw_ptr); \ | 65 initializeHandle(obj, raw_ptr); \ |
66 return *obj; \ | 66 return *obj; \ |
67 } \ | 67 } \ |
68 /* DEPRECATED: Use Zone version. */ \ | |
69 static object& Handle(Isolate* isolate, Raw##object* raw_ptr) { \ | |
70 return Handle(isolate->current_zone(), raw_ptr); \ | |
71 } \ | |
72 static object& Handle() { \ | 68 static object& Handle() { \ |
73 return Handle(Thread::Current()->zone(), object::null()); \ | 69 return Handle(Thread::Current()->zone(), object::null()); \ |
74 } \ | 70 } \ |
75 static object& Handle(Zone* zone) { \ | 71 static object& Handle(Zone* zone) { \ |
76 return Handle(zone, object::null()); \ | 72 return Handle(zone, object::null()); \ |
77 } \ | 73 } \ |
78 /* DEPRECATED: Use Zone version. */ \ | |
79 static object& Handle(Isolate* isolate) { \ | |
80 return Handle(isolate->current_zone(), object::null()); \ | |
81 } \ | |
82 static object& Handle(Raw##object* raw_ptr) { \ | 74 static object& Handle(Raw##object* raw_ptr) { \ |
83 return Handle(Thread::Current()->zone(), raw_ptr); \ | 75 return Handle(Thread::Current()->zone(), raw_ptr); \ |
84 } \ | 76 } \ |
85 static object& CheckedHandle(Zone* zone, RawObject* raw_ptr) { \ | 77 static object& CheckedHandle(Zone* zone, RawObject* raw_ptr) { \ |
86 object* obj = \ | 78 object* obj = \ |
87 reinterpret_cast<object*>(VMHandles::AllocateHandle(zone)); \ | 79 reinterpret_cast<object*>(VMHandles::AllocateHandle(zone)); \ |
88 initializeHandle(obj, raw_ptr); \ | 80 initializeHandle(obj, raw_ptr); \ |
89 if (!obj->Is##object()) { \ | 81 if (!obj->Is##object()) { \ |
90 FATAL2("Handle check failed: saw %s expected %s", \ | 82 FATAL2("Handle check failed: saw %s expected %s", \ |
91 obj->ToCString(), #object); \ | 83 obj->ToCString(), #object); \ |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 | 313 |
322 bool IsReadOnlyHandle() const; | 314 bool IsReadOnlyHandle() const; |
323 | 315 |
324 bool IsNotTemporaryScopedHandle() const; | 316 bool IsNotTemporaryScopedHandle() const; |
325 | 317 |
326 static Object& Handle(Zone* zone, RawObject* raw_ptr) { | 318 static Object& Handle(Zone* zone, RawObject* raw_ptr) { |
327 Object* obj = reinterpret_cast<Object*>(VMHandles::AllocateHandle(zone)); | 319 Object* obj = reinterpret_cast<Object*>(VMHandles::AllocateHandle(zone)); |
328 initializeHandle(obj, raw_ptr); | 320 initializeHandle(obj, raw_ptr); |
329 return *obj; | 321 return *obj; |
330 } | 322 } |
331 // DEPRECATED: Use Zone version. | |
332 static Object& Handle(Isolate* isolate, RawObject* raw_ptr) { | |
333 return Handle(isolate->current_zone(), raw_ptr); | |
334 } | |
335 static Object* ReadOnlyHandle() { | 323 static Object* ReadOnlyHandle() { |
336 Object* obj = reinterpret_cast<Object*>( | 324 Object* obj = reinterpret_cast<Object*>( |
337 Dart::AllocateReadOnlyHandle()); | 325 Dart::AllocateReadOnlyHandle()); |
338 initializeHandle(obj, Object::null()); | 326 initializeHandle(obj, Object::null()); |
339 return obj; | 327 return obj; |
340 } | 328 } |
341 | 329 |
342 static Object& Handle() { | 330 static Object& Handle() { |
343 return Handle(Thread::Current()->zone(), null_); | 331 return Handle(Thread::Current()->zone(), null_); |
344 } | 332 } |
345 | 333 |
346 static Object& Handle(Zone* zone) { | 334 static Object& Handle(Zone* zone) { |
347 return Handle(zone, null_); | 335 return Handle(zone, null_); |
348 } | 336 } |
349 // DEPRECATED: Use Zone version. | |
350 static Object& Handle(Isolate* isolate) { | |
351 return Handle(isolate->current_zone(), null_); | |
352 } | |
353 | 337 |
354 static Object& Handle(RawObject* raw_ptr) { | 338 static Object& Handle(RawObject* raw_ptr) { |
355 return Handle(Thread::Current()->zone(), raw_ptr); | 339 return Handle(Thread::Current()->zone(), raw_ptr); |
356 } | 340 } |
357 | 341 |
358 static Object& ZoneHandle(Zone* zone, RawObject* raw_ptr) { | 342 static Object& ZoneHandle(Zone* zone, RawObject* raw_ptr) { |
359 Object* obj = reinterpret_cast<Object*>( | 343 Object* obj = reinterpret_cast<Object*>( |
360 VMHandles::AllocateZoneHandle(zone)); | 344 VMHandles::AllocateZoneHandle(zone)); |
361 initializeHandle(obj, raw_ptr); | 345 initializeHandle(obj, raw_ptr); |
362 return *obj; | 346 return *obj; |
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
844 raw_ = value; | 828 raw_ = value; |
845 } | 829 } |
846 | 830 |
847 static PassiveObject& Handle(Zone* zone, RawObject* raw_ptr) { | 831 static PassiveObject& Handle(Zone* zone, RawObject* raw_ptr) { |
848 PassiveObject* obj = reinterpret_cast<PassiveObject*>( | 832 PassiveObject* obj = reinterpret_cast<PassiveObject*>( |
849 VMHandles::AllocateHandle(zone)); | 833 VMHandles::AllocateHandle(zone)); |
850 obj->raw_ = raw_ptr; | 834 obj->raw_ = raw_ptr; |
851 obj->set_vtable(0); | 835 obj->set_vtable(0); |
852 return *obj; | 836 return *obj; |
853 } | 837 } |
854 // DEPRECATED - use Zone version. | |
855 static PassiveObject& Handle(Isolate* I, RawObject* raw_ptr) { | |
856 return Handle(I->current_zone(), raw_ptr); | |
857 } | |
858 static PassiveObject& Handle(RawObject* raw_ptr) { | 838 static PassiveObject& Handle(RawObject* raw_ptr) { |
859 return Handle(Thread::Current()->zone(), raw_ptr); | 839 return Handle(Thread::Current()->zone(), raw_ptr); |
860 } | 840 } |
861 static PassiveObject& Handle() { | 841 static PassiveObject& Handle() { |
862 return Handle(Thread::Current()->zone(), Object::null()); | 842 return Handle(Thread::Current()->zone(), Object::null()); |
863 } | 843 } |
864 static PassiveObject& Handle(Zone* zone) { | 844 static PassiveObject& Handle(Zone* zone) { |
865 return Handle(zone, Object::null()); | 845 return Handle(zone, Object::null()); |
866 } | 846 } |
867 // DEPRECATED - use Zone version. | |
868 static PassiveObject& Handle(Isolate* I) { | |
869 return Handle(I, Object::null()); | |
870 } | |
871 static PassiveObject& ZoneHandle(Zone* zone, RawObject* raw_ptr) { | 847 static PassiveObject& ZoneHandle(Zone* zone, RawObject* raw_ptr) { |
872 PassiveObject* obj = reinterpret_cast<PassiveObject*>( | 848 PassiveObject* obj = reinterpret_cast<PassiveObject*>( |
873 VMHandles::AllocateZoneHandle(zone)); | 849 VMHandles::AllocateZoneHandle(zone)); |
874 obj->raw_ = raw_ptr; | 850 obj->raw_ = raw_ptr; |
875 obj->set_vtable(0); | 851 obj->set_vtable(0); |
876 return *obj; | 852 return *obj; |
877 } | 853 } |
878 static PassiveObject& ZoneHandle(RawObject* raw_ptr) { | 854 static PassiveObject& ZoneHandle(RawObject* raw_ptr) { |
879 return ZoneHandle(Thread::Current()->zone(), raw_ptr); | 855 return ZoneHandle(Thread::Current()->zone(), raw_ptr); |
880 } | 856 } |
(...skipping 7285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8166 | 8142 |
8167 | 8143 |
8168 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, | 8144 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, |
8169 intptr_t index) { | 8145 intptr_t index) { |
8170 return array.At((index * kEntryLength) + kTargetFunctionIndex); | 8146 return array.At((index * kEntryLength) + kTargetFunctionIndex); |
8171 } | 8147 } |
8172 | 8148 |
8173 } // namespace dart | 8149 } // namespace dart |
8174 | 8150 |
8175 #endif // VM_OBJECT_H_ | 8151 #endif // VM_OBJECT_H_ |
OLD | NEW |