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

Side by Side Diff: runtime/vm/object.cc

Issue 18242003: Add a VM defined class MirrorReference as an opaque pointer for Dart code to VM internal objects. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 5 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 | « runtime/vm/object.h ('k') | runtime/vm/object_store.h » ('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 #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 911 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 922
923 cls = Class::New<Double>(); 923 cls = Class::New<Double>();
924 object_store->set_double_class(cls); 924 object_store->set_double_class(cls);
925 RegisterPrivateClass(cls, Symbols::_Double(), core_lib); 925 RegisterPrivateClass(cls, Symbols::_Double(), core_lib);
926 pending_classes.Add(cls, Heap::kOld); 926 pending_classes.Add(cls, Heap::kOld);
927 927
928 cls = Class::New<WeakProperty>(); 928 cls = Class::New<WeakProperty>();
929 object_store->set_weak_property_class(cls); 929 object_store->set_weak_property_class(cls);
930 RegisterPrivateClass(cls, Symbols::_WeakProperty(), core_lib); 930 RegisterPrivateClass(cls, Symbols::_WeakProperty(), core_lib);
931 931
932 // Pre-register the mirrors library so we can place the vm class
933 // MirrorReference there rather than the core library.
934 lib = Library::LookupLibrary(Symbols::DartMirrors());
935 if (lib.IsNull()) {
936 lib = Library::NewLibraryHelper(Symbols::DartMirrors(), true);
937 lib.Register();
938 isolate->object_store()->set_bootstrap_library(ObjectStore::kMirrors,
939 lib);
940 }
941 ASSERT(!lib.IsNull());
942 ASSERT(lib.raw() == Library::MirrorsLibrary());
943
944 cls = Class::New<MirrorReference>();
945 object_store->set_mirror_reference_class(cls);
946 RegisterPrivateClass(cls, Symbols::_MirrorReference(), lib);
947
932 // Setup some default native field classes which can be extended for 948 // Setup some default native field classes which can be extended for
933 // specifying native fields in dart classes. 949 // specifying native fields in dart classes.
934 Library::InitNativeWrappersLibrary(isolate); 950 Library::InitNativeWrappersLibrary(isolate);
935 ASSERT(isolate->object_store()->native_wrappers_library() != Library::null()); 951 ASSERT(isolate->object_store()->native_wrappers_library() != Library::null());
936 952
937 // Pre-register the typed_data library so the native class implementations 953 // Pre-register the typed_data library so the native class implementations
938 // can be hooked up before compiling it. 954 // can be hooked up before compiling it.
939 lib = Library::LookupLibrary(Symbols::DartTypedData()); 955 lib = Library::LookupLibrary(Symbols::DartTypedData());
940 if (lib.IsNull()) { 956 if (lib.IsNull()) {
941 lib = Library::NewLibraryHelper(Symbols::DartTypedData(), true); 957 lib = Library::NewLibraryHelper(Symbols::DartTypedData(), true);
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 object_store->set_jsregexp_class(cls); 1208 object_store->set_jsregexp_class(cls);
1193 1209
1194 // Some classes are not stored in the object store. Yet we still need to 1210 // Some classes are not stored in the object store. Yet we still need to
1195 // create their Class object so that they get put into the class_table 1211 // create their Class object so that they get put into the class_table
1196 // (as a side effect of Class::New()). 1212 // (as a side effect of Class::New()).
1197 cls = Class::New<DartFunction>(); 1213 cls = Class::New<DartFunction>();
1198 cls = Class::New<Number>(); 1214 cls = Class::New<Number>();
1199 1215
1200 cls = Class::New<WeakProperty>(); 1216 cls = Class::New<WeakProperty>();
1201 object_store->set_weak_property_class(cls); 1217 object_store->set_weak_property_class(cls);
1218
1219 cls = Class::New<MirrorReference>();
1220 object_store->set_mirror_reference_class(cls);
1202 } 1221 }
1203 1222
1204 1223
1205 void Object::Print() const { 1224 void Object::Print() const {
1206 OS::Print("%s\n", ToCString()); 1225 OS::Print("%s\n", ToCString());
1207 } 1226 }
1208 1227
1209 1228
1210 RawString* Object::DictionaryName() const { 1229 RawString* Object::DictionaryName() const {
1211 return String::null(); 1230 return String::null();
(...skipping 12452 matching lines...) Expand 10 before | Expand all | Expand 10 after
13664 WeakProperty::InstanceSize(), 13683 WeakProperty::InstanceSize(),
13665 space); 13684 space);
13666 return reinterpret_cast<RawWeakProperty*>(raw); 13685 return reinterpret_cast<RawWeakProperty*>(raw);
13667 } 13686 }
13668 13687
13669 13688
13670 const char* WeakProperty::ToCString() const { 13689 const char* WeakProperty::ToCString() const {
13671 return "_WeakProperty"; 13690 return "_WeakProperty";
13672 } 13691 }
13673 13692
13693
13694 RawMirrorReference* MirrorReference::New(Heap::Space space) {
13695 ASSERT(Isolate::Current()->object_store()->mirror_reference_class()
13696 != Class::null());
13697 RawObject* raw = Object::Allocate(MirrorReference::kClassId,
13698 MirrorReference::InstanceSize(),
13699 space);
13700 return reinterpret_cast<RawMirrorReference*>(raw);
13701 }
13702
13703
13704 const char* MirrorReference::ToCString() const {
13705 return "_MirrorReference";
13706 }
13707
13708
13674 } // namespace dart 13709 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698