| 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 #include "vm/object.h" | 5 #include "vm/object.h" |
| 6 | 6 |
| 7 #include "include/dart_api.h" | 7 #include "include/dart_api.h" |
| 8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
| 9 #include "vm/assembler.h" | 9 #include "vm/assembler.h" |
| 10 #include "vm/cpu.h" | 10 #include "vm/cpu.h" |
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 411 cls.raw_ptr()->type_arguments_field_offset_in_words_ = | 411 cls.raw_ptr()->type_arguments_field_offset_in_words_ = |
| 412 Class::kNoTypeArguments; | 412 Class::kNoTypeArguments; |
| 413 cls.raw_ptr()->num_native_fields_ = 0; | 413 cls.raw_ptr()->num_native_fields_ = 0; |
| 414 cls.InitEmptyFields(); | 414 cls.InitEmptyFields(); |
| 415 isolate->RegisterClass(cls); | 415 isolate->RegisterClass(cls); |
| 416 } | 416 } |
| 417 | 417 |
| 418 // Allocate and initialize the null class. | 418 // Allocate and initialize the null class. |
| 419 cls = Class::New<Instance>(kNullCid); | 419 cls = Class::New<Instance>(kNullCid); |
| 420 cls.set_is_finalized(); | 420 cls.set_is_finalized(); |
| 421 cls.set_is_type_finalized(); | |
| 422 isolate->object_store()->set_null_class(cls); | 421 isolate->object_store()->set_null_class(cls); |
| 423 | 422 |
| 424 // Allocate and initialize the free list element class. | 423 // Allocate and initialize the free list element class. |
| 425 cls = Class::New<FreeListElement::FakeInstance>(kFreeListElement); | 424 cls = Class::New<FreeListElement::FakeInstance>(kFreeListElement); |
| 426 cls.set_is_finalized(); | 425 cls.set_is_finalized(); |
| 427 cls.set_is_type_finalized(); | 426 cls.set_is_type_finalized(); |
| 428 | 427 |
| 429 // Allocate and initialize the sentinel values of Null class. | 428 // Allocate and initialize the sentinel values of Null class. |
| 430 { | 429 { |
| 431 *sentinel_ ^= | 430 *sentinel_ ^= |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 | 847 |
| 849 // Now that the symbol table is initialized and that the core dictionary as | 848 // Now that the symbol table is initialized and that the core dictionary as |
| 850 // well as the core implementation dictionary have been setup, preallocate | 849 // well as the core implementation dictionary have been setup, preallocate |
| 851 // remaining classes and register them by name in the dictionaries. | 850 // remaining classes and register them by name in the dictionaries. |
| 852 String& name = String::Handle(); | 851 String& name = String::Handle(); |
| 853 cls = Class::New<Bool>(); | 852 cls = Class::New<Bool>(); |
| 854 object_store->set_bool_class(cls); | 853 object_store->set_bool_class(cls); |
| 855 RegisterClass(cls, Symbols::Bool(), core_lib); | 854 RegisterClass(cls, Symbols::Bool(), core_lib); |
| 856 pending_classes.Add(cls, Heap::kOld); | 855 pending_classes.Add(cls, Heap::kOld); |
| 857 | 856 |
| 858 // TODO(12364): The class 'Null' is not registered in the class dictionary | |
| 859 // because it is not exported by dart:core. | |
| 860 cls = Class::New<Instance>(kNullCid); | 857 cls = Class::New<Instance>(kNullCid); |
| 861 cls.set_name(Symbols::Null()); | 858 cls.set_is_prefinalized(); |
| 862 // We immediately mark Null as finalized because it has no corresponding | |
| 863 // source. | |
| 864 cls.set_is_finalized(); | |
| 865 cls.set_is_type_finalized(); | |
| 866 object_store->set_null_class(cls); | 859 object_store->set_null_class(cls); |
| 867 cls.set_library(core_lib); // A sort of fiction for the mirrors. | 860 RegisterClass(cls, Symbols::Null(), core_lib); |
| 868 // When/if we promote Null to an ordinary class, it should be added to the | 861 pending_classes.Add(cls, Heap::kOld); |
| 869 // core library, given source and added to the list of classes pending | |
| 870 // finalization. | |
| 871 // RegisterClass(cls, Symbols::Null(), core_lib); | |
| 872 // pending_classes.Add(cls, Heap::kOld); | |
| 873 | 862 |
| 874 cls = object_store->array_class(); // Was allocated above. | 863 cls = object_store->array_class(); // Was allocated above. |
| 875 RegisterPrivateClass(cls, Symbols::ObjectArray(), core_lib); | 864 RegisterPrivateClass(cls, Symbols::ObjectArray(), core_lib); |
| 876 pending_classes.Add(cls, Heap::kOld); | 865 pending_classes.Add(cls, Heap::kOld); |
| 877 // We cannot use NewNonParameterizedType(cls), because Array is parameterized. | 866 // We cannot use NewNonParameterizedType(cls), because Array is parameterized. |
| 878 type ^= Type::New(Object::Handle(cls.raw()), | 867 type ^= Type::New(Object::Handle(cls.raw()), |
| 879 TypeArguments::Handle(), | 868 TypeArguments::Handle(), |
| 880 Scanner::kDummyTokenIndex); | 869 Scanner::kDummyTokenIndex); |
| 881 type.SetIsFinalized(); | 870 type.SetIsFinalized(); |
| 882 type ^= type.Canonicalize(); | 871 type ^= type.Canonicalize(); |
| (...skipping 13729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14612 } | 14601 } |
| 14613 | 14602 |
| 14614 | 14603 |
| 14615 void MirrorReference::PrintToJSONStream(JSONStream* stream, bool ref) const { | 14604 void MirrorReference::PrintToJSONStream(JSONStream* stream, bool ref) const { |
| 14616 stream->OpenObject(); | 14605 stream->OpenObject(); |
| 14617 stream->CloseObject(); | 14606 stream->CloseObject(); |
| 14618 } | 14607 } |
| 14619 | 14608 |
| 14620 | 14609 |
| 14621 } // namespace dart | 14610 } // namespace dart |
| OLD | NEW |