Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(382)

Side by Side Diff: vm/object.h

Issue 11745022: - Make Boolean 'true' and 'false' singleton VM isolate objects. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « vm/intrinsifier_x64.cc ('k') | vm/object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 ASSERT(sentinel_ != NULL); 262 ASSERT(sentinel_ != NULL);
263 return *sentinel_; 263 return *sentinel_;
264 } 264 }
265 // Value marking that we are transitioning from sentinel, e.g., computing 265 // Value marking that we are transitioning from sentinel, e.g., computing
266 // a field value. Used to detect circular initialization. 266 // a field value. Used to detect circular initialization.
267 static const Instance& transition_sentinel() { 267 static const Instance& transition_sentinel() {
268 ASSERT(transition_sentinel_ != NULL); 268 ASSERT(transition_sentinel_ != NULL);
269 return *transition_sentinel_; 269 return *transition_sentinel_;
270 } 270 }
271 271
272 static const Bool& bool_true() {
273 ASSERT(bool_true_ != NULL);
274 return *bool_true_;
275 }
276 static const Bool& bool_false() {
277 ASSERT(bool_false_ != NULL);
278 return *bool_false_;
279 }
280
272 static RawClass* class_class() { return class_class_; } 281 static RawClass* class_class() { return class_class_; }
273 static RawClass* null_class() { return null_class_; } 282 static RawClass* null_class() { return null_class_; }
274 static RawClass* dynamic_class() { return dynamic_class_; } 283 static RawClass* dynamic_class() { return dynamic_class_; }
275 static RawClass* void_class() { return void_class_; } 284 static RawClass* void_class() { return void_class_; }
276 static RawClass* unresolved_class_class() { return unresolved_class_class_; } 285 static RawClass* unresolved_class_class() { return unresolved_class_class_; }
277 static RawClass* type_arguments_class() { return type_arguments_class_; } 286 static RawClass* type_arguments_class() { return type_arguments_class_; }
278 static RawClass* instantiated_type_arguments_class() { 287 static RawClass* instantiated_type_arguments_class() {
279 return instantiated_type_arguments_class_; 288 return instantiated_type_arguments_class_;
280 } 289 }
281 static RawClass* patch_class_class() { return patch_class_class_; } 290 static RawClass* patch_class_class() { return patch_class_class_; }
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 static RawClass* api_error_class_; // Class of ApiError. 455 static RawClass* api_error_class_; // Class of ApiError.
447 static RawClass* language_error_class_; // Class of LanguageError. 456 static RawClass* language_error_class_; // Class of LanguageError.
448 static RawClass* unhandled_exception_class_; // Class of UnhandledException. 457 static RawClass* unhandled_exception_class_; // Class of UnhandledException.
449 static RawClass* unwind_error_class_; // Class of UnwindError. 458 static RawClass* unwind_error_class_; // Class of UnwindError.
450 459
451 // The static values below are read-only handle pointers for singleton 460 // The static values below are read-only handle pointers for singleton
452 // objects that are shared between the different isolates. 461 // objects that are shared between the different isolates.
453 static Array* empty_array_; 462 static Array* empty_array_;
454 static Instance* sentinel_; 463 static Instance* sentinel_;
455 static Instance* transition_sentinel_; 464 static Instance* transition_sentinel_;
465 static Bool* bool_true_;
466 static Bool* bool_false_;
456 467
457 friend void ClassTable::Register(const Class& cls); 468 friend void ClassTable::Register(const Class& cls);
458 friend void RawObject::Validate(Isolate* isolate) const; 469 friend void RawObject::Validate(Isolate* isolate) const;
459 friend class Closure; 470 friend class Closure;
460 friend class SnapshotReader; 471 friend class SnapshotReader;
461 friend class OneByteString; 472 friend class OneByteString;
462 friend class TwoByteString; 473 friend class TwoByteString;
463 friend class ExternalOneByteString; 474 friend class ExternalOneByteString;
464 friend class ExternalTwoByteString; 475 friend class ExternalTwoByteString;
465 476
(...skipping 3921 matching lines...) Expand 10 before | Expand all | Expand 10 after
4387 class Bool : public Instance { 4398 class Bool : public Instance {
4388 public: 4399 public:
4389 bool value() const { 4400 bool value() const {
4390 return raw_ptr()->value_; 4401 return raw_ptr()->value_;
4391 } 4402 }
4392 4403
4393 static intptr_t InstanceSize() { 4404 static intptr_t InstanceSize() {
4394 return RoundedAllocationSize(sizeof(RawBool)); 4405 return RoundedAllocationSize(sizeof(RawBool));
4395 } 4406 }
4396 4407
4397 static RawBool* True(); 4408 static const Bool& True() {
4398 static RawBool* False(); 4409 return Object::bool_true();
4410 }
4411
4412 static const Bool& False() {
4413 return Object::bool_false();
4414 }
4399 4415
4400 static RawBool* Get(bool value) { 4416 static RawBool* Get(bool value) {
4401 return value ? Bool::True() : Bool::False(); 4417 return value ? Bool::True().raw() : Bool::False().raw();
4402 } 4418 }
4403 4419
4404 private: 4420 private:
4405 void set_value(bool value) const { raw_ptr()->value_ = value; } 4421 void set_value(bool value) const { raw_ptr()->value_ = value; }
4406 4422
4407 // New should only be called to initialize the two legal bool values. 4423 // New should only be called to initialize the two legal bool values.
4408 static RawBool* New(bool value); 4424 static RawBool* New(bool value);
4409 4425
4410 HEAP_OBJECT_IMPLEMENTATION(Bool, Instance); 4426 HEAP_OBJECT_IMPLEMENTATION(Bool, Instance);
4411 friend class Class; 4427 friend class Class;
(...skipping 1800 matching lines...) Expand 10 before | Expand all | Expand 10 after
6212 6228
6213 6229
6214 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, 6230 RawObject* MegamorphicCache::GetTargetFunction(const Array& array,
6215 intptr_t index) { 6231 intptr_t index) {
6216 return array.At((index * kEntryLength) + kTargetFunctionIndex); 6232 return array.At((index * kEntryLength) + kTargetFunctionIndex);
6217 } 6233 }
6218 6234
6219 } // namespace dart 6235 } // namespace dart
6220 6236
6221 #endif // VM_OBJECT_H_ 6237 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « vm/intrinsifier_x64.cc ('k') | vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698