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

Side by Side Diff: runtime/vm/object_store.h

Issue 2485993002: VM: Support bootstrapping core libraries from Kernel binaries instead of source. (Closed)
Patch Set: Done Created 4 years, 1 month 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
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 RUNTIME_VM_OBJECT_STORE_H_ 5 #ifndef RUNTIME_VM_OBJECT_STORE_H_
6 #define RUNTIME_VM_OBJECT_STORE_H_ 6 #define RUNTIME_VM_OBJECT_STORE_H_
7 7
8 #include "vm/object.h" 8 #include "vm/object.h"
9 9
10 namespace dart { 10 namespace dart {
11 11
12 // Forward declarations. 12 // Forward declarations.
13 class Isolate; 13 class Isolate;
14 class ObjectPointerVisitor; 14 class ObjectPointerVisitor;
15 15
16 // A list of the bootstrap libraries including CamelName and hacker_name.
17 //
18 // These are listed in the order that they are compiled (see vm/bootstrap.cc).
19 #define FOR_EACH_PRODUCT_LIBRARY(M) \
hausner 2016/11/09 00:42:49 Similar to Florian's comment, I would prefer to ha
Vyacheslav Egorov (Google) 2016/11/09 14:43:16 It's in separate CL now: https://codereview.chromi
20 M(Core, core) \
21 M(Async, async) \
22 M(Collection, collection) \
23 M(Convert, convert) \
24 M(Developer, developer) \
25 M(Internal, _internal) \
26 M(Isolate, isolate) \
27 M(Math, math) \
28 M(Profiler, profiler) \
29 M(TypedData, typed_data) \
30 M(VMService, _vmservice)
31
32 #ifdef PRODUCT
33 #define FOR_EACH_BOOTSTRAP_LIBRARY(M) FOR_EACH_PRODUCT_LIBRARY(M)
34
35 #else
36 #define FOR_EACH_BOOTSTRAP_LIBRARY(M) \
37 FOR_EACH_PRODUCT_LIBRARY(M) \
38 M(Mirrors, mirrors)
39
40 #endif
41
16 // The object store is a per isolate instance which stores references to 42 // The object store is a per isolate instance which stores references to
17 // objects used by the VM. 43 // objects used by the VM.
18 // TODO(iposva): Move the actual store into the object heap for quick handling 44 // TODO(iposva): Move the actual store into the object heap for quick handling
19 // by snapshots eventually. 45 // by snapshots eventually.
20 class ObjectStore { 46 class ObjectStore {
21 public: 47 public:
22 enum BootstrapLibraryId { 48 enum BootstrapLibraryId {
23 kNone = 0, 49 #define MAKE_ID(Name, _) k##Name,
24 kAsync, 50
25 kCore, 51 FOR_EACH_BOOTSTRAP_LIBRARY(MAKE_ID)
26 kCollection, 52 #undef MAKE_ID
27 kConvert,
28 kDeveloper,
29 kInternal,
30 kIsolate,
31 kMath,
32 kMirrors,
33 kProfiler,
34 kTypedData,
35 kVMService,
36 }; 53 };
37 54
38 ~ObjectStore(); 55 ~ObjectStore();
39 56
40 RawClass* object_class() const { 57 RawClass* object_class() const {
41 ASSERT(object_class_ != Object::null()); 58 ASSERT(object_class_ != Object::null());
42 return object_class_; 59 return object_class_;
43 } 60 }
44 void set_object_class(const Class& value) { object_class_ = value.raw(); } 61 void set_object_class(const Class& value) { object_class_ = value.raw(); }
45 static intptr_t object_class_offset() { 62 static intptr_t object_class_offset() {
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 canonical_types_ = value.raw(); 286 canonical_types_ = value.raw();
270 } 287 }
271 288
272 RawArray* canonical_type_arguments() const { 289 RawArray* canonical_type_arguments() const {
273 return canonical_type_arguments_; 290 return canonical_type_arguments_;
274 } 291 }
275 void set_canonical_type_arguments(const Array& value) { 292 void set_canonical_type_arguments(const Array& value) {
276 canonical_type_arguments_ = value.raw(); 293 canonical_type_arguments_ = value.raw();
277 } 294 }
278 295
279 RawLibrary* async_library() const { return async_library_; } 296 #define MAKE_GETTER(_, name) \
280 RawLibrary* builtin_library() const { return builtin_library_; } 297 RawLibrary* name##_library() const { return name##_library_; }
281 RawLibrary* core_library() const { return core_library_; } 298
282 RawLibrary* collection_library() const { return collection_library_; } 299 FOR_EACH_BOOTSTRAP_LIBRARY(MAKE_GETTER)
283 RawLibrary* convert_library() const { return convert_library_; } 300 #undef MAKE_GETTER
284 RawLibrary* developer_library() const { return developer_library_; } 301
285 RawLibrary* internal_library() const { return internal_library_; } 302 RawLibrary* bootstrap_library(BootstrapLibraryId index) {
286 RawLibrary* isolate_library() const { return isolate_library_; } 303 switch (index) {
287 RawLibrary* math_library() const { return math_library_; } 304 #define MAKE_CASE(CamelName, hacker_name) \
288 RawLibrary* mirrors_library() const { return mirrors_library_; } 305 case k##CamelName: \
289 RawLibrary* profiler_library() const { return profiler_library_; } 306 return hacker_name##_library_;
290 RawLibrary* typed_data_library() const { return typed_data_library_; } 307
291 RawLibrary* vmservice_library() const { return vmservice_library_; } 308 FOR_EACH_BOOTSTRAP_LIBRARY(MAKE_CASE)
309 #undef MAKE_CASE
310
311 default:
312 UNREACHABLE();
313 return Library::null();
314 }
315 }
292 316
293 void set_bootstrap_library(BootstrapLibraryId index, const Library& value) { 317 void set_bootstrap_library(BootstrapLibraryId index, const Library& value) {
294 switch (index) { 318 switch (index) {
295 case kAsync: 319 #define MAKE_CASE(CamelName, hacker_name) \
296 async_library_ = value.raw(); 320 case k##CamelName: \
297 break; 321 hacker_name##_library_ = value.raw(); \
298 case kCore: 322 break;
299 core_library_ = value.raw(); 323
300 break; 324 FOR_EACH_BOOTSTRAP_LIBRARY(MAKE_CASE)
301 case kCollection: 325 #undef MAKE_CASE
302 collection_library_ = value.raw();
303 break;
304 case kConvert:
305 convert_library_ = value.raw();
306 break;
307 case kDeveloper:
308 developer_library_ = value.raw();
309 break;
310 case kInternal:
311 internal_library_ = value.raw();
312 break;
313 case kIsolate:
314 isolate_library_ = value.raw();
315 break;
316 case kMath:
317 math_library_ = value.raw();
318 break;
319 case kMirrors:
320 mirrors_library_ = value.raw();
321 break;
322 case kProfiler:
323 profiler_library_ = value.raw();
324 break;
325 case kTypedData:
326 typed_data_library_ = value.raw();
327 break;
328 case kVMService:
329 vmservice_library_ = value.raw();
330 break;
331 default: 326 default:
332 UNREACHABLE(); 327 UNREACHABLE();
333 } 328 }
334 } 329 }
335 330
336 void set_builtin_library(const Library& value) { 331 void set_builtin_library(const Library& value) {
337 builtin_library_ = value.raw(); 332 builtin_library_ = value.raw();
338 } 333 }
339 334
340 RawLibrary* native_wrappers_library() const { 335 RawLibrary* native_wrappers_library() const {
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
570 V(RawClass*, weak_property_class_) \ 565 V(RawClass*, weak_property_class_) \
571 V(RawArray*, symbol_table_) \ 566 V(RawArray*, symbol_table_) \
572 V(RawArray*, canonical_types_) \ 567 V(RawArray*, canonical_types_) \
573 V(RawArray*, canonical_type_arguments_) \ 568 V(RawArray*, canonical_type_arguments_) \
574 V(RawLibrary*, async_library_) \ 569 V(RawLibrary*, async_library_) \
575 V(RawLibrary*, builtin_library_) \ 570 V(RawLibrary*, builtin_library_) \
576 V(RawLibrary*, core_library_) \ 571 V(RawLibrary*, core_library_) \
577 V(RawLibrary*, collection_library_) \ 572 V(RawLibrary*, collection_library_) \
578 V(RawLibrary*, convert_library_) \ 573 V(RawLibrary*, convert_library_) \
579 V(RawLibrary*, developer_library_) \ 574 V(RawLibrary*, developer_library_) \
580 V(RawLibrary*, internal_library_) \ 575 V(RawLibrary*, _internal_library_) \
581 V(RawLibrary*, isolate_library_) \ 576 V(RawLibrary*, isolate_library_) \
582 V(RawLibrary*, math_library_) \ 577 V(RawLibrary*, math_library_) \
583 V(RawLibrary*, mirrors_library_) \ 578 V(RawLibrary*, mirrors_library_) \
584 V(RawLibrary*, native_wrappers_library_) \ 579 V(RawLibrary*, native_wrappers_library_) \
585 V(RawLibrary*, profiler_library_) \ 580 V(RawLibrary*, profiler_library_) \
586 V(RawLibrary*, root_library_) \ 581 V(RawLibrary*, root_library_) \
587 V(RawLibrary*, typed_data_library_) \ 582 V(RawLibrary*, typed_data_library_) \
588 V(RawLibrary*, vmservice_library_) \ 583 V(RawLibrary*, _vmservice_library_) \
589 V(RawGrowableObjectArray*, libraries_) \ 584 V(RawGrowableObjectArray*, libraries_) \
590 V(RawArray*, libraries_map_) \ 585 V(RawArray*, libraries_map_) \
591 V(RawGrowableObjectArray*, closure_functions_) \ 586 V(RawGrowableObjectArray*, closure_functions_) \
592 V(RawGrowableObjectArray*, pending_classes_) \ 587 V(RawGrowableObjectArray*, pending_classes_) \
593 V(RawGrowableObjectArray*, pending_deferred_loads_) \ 588 V(RawGrowableObjectArray*, pending_deferred_loads_) \
594 V(RawGrowableObjectArray*, resume_capabilities_) \ 589 V(RawGrowableObjectArray*, resume_capabilities_) \
595 V(RawGrowableObjectArray*, exit_listeners_) \ 590 V(RawGrowableObjectArray*, exit_listeners_) \
596 V(RawGrowableObjectArray*, error_listeners_) \ 591 V(RawGrowableObjectArray*, error_listeners_) \
597 V(RawContext*, empty_context_) \ 592 V(RawContext*, empty_context_) \
598 V(RawInstance*, stack_overflow_) \ 593 V(RawInstance*, stack_overflow_) \
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 636
642 friend class Serializer; 637 friend class Serializer;
643 friend class Deserializer; 638 friend class Deserializer;
644 639
645 DISALLOW_COPY_AND_ASSIGN(ObjectStore); 640 DISALLOW_COPY_AND_ASSIGN(ObjectStore);
646 }; 641 };
647 642
648 } // namespace dart 643 } // namespace dart
649 644
650 #endif // RUNTIME_VM_OBJECT_STORE_H_ 645 #endif // RUNTIME_VM_OBJECT_STORE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698