| 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/become.h" | 10 #include "vm/become.h" |
| (...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1129 // | 1129 // |
| 1130 // There are three possibilities: | 1130 // There are three possibilities: |
| 1131 // 1. Running a Kernel binary. This function will bootstrap from the KERNEL | 1131 // 1. Running a Kernel binary. This function will bootstrap from the KERNEL |
| 1132 // file. | 1132 // file. |
| 1133 // 2. There is no snapshot. This function will bootstrap from source. | 1133 // 2. There is no snapshot. This function will bootstrap from source. |
| 1134 // 3. There is a snapshot. The caller should initialize from the snapshot. | 1134 // 3. There is a snapshot. The caller should initialize from the snapshot. |
| 1135 // | 1135 // |
| 1136 // A non-NULL kernel argument indicates (1). A NULL kernel indicates (2) or | 1136 // A non-NULL kernel argument indicates (1). A NULL kernel indicates (2) or |
| 1137 // (3), depending on whether the VM is compiled with DART_NO_SNAPSHOT defined or | 1137 // (3), depending on whether the VM is compiled with DART_NO_SNAPSHOT defined or |
| 1138 // not. | 1138 // not. |
| 1139 RawError* Object::Init(Isolate* isolate, | 1139 RawError* Object::Init(Isolate* isolate, kernel::Program* kernel_program) { |
| 1140 const uint8_t* kernel_buffer, | |
| 1141 intptr_t kernel_buffer_length) { | |
| 1142 Thread* thread = Thread::Current(); | 1140 Thread* thread = Thread::Current(); |
| 1143 Zone* zone = thread->zone(); | 1141 Zone* zone = thread->zone(); |
| 1144 ASSERT(isolate == thread->isolate()); | 1142 ASSERT(isolate == thread->isolate()); |
| 1145 #if !defined(DART_PRECOMPILED_RUNTIME) | 1143 #if !defined(DART_PRECOMPILED_RUNTIME) |
| 1146 const bool is_kernel = (kernel_buffer != NULL); | 1144 const bool is_kernel = (kernel_program != NULL); |
| 1147 #endif | 1145 #endif |
| 1148 NOT_IN_PRODUCT(TimelineDurationScope tds(thread, Timeline::GetIsolateStream(), | 1146 NOT_IN_PRODUCT(TimelineDurationScope tds(thread, Timeline::GetIsolateStream(), |
| 1149 "Object::Init");) | 1147 "Object::Init");) |
| 1150 | 1148 |
| 1151 #if defined(DART_NO_SNAPSHOT) | 1149 #if defined(DART_NO_SNAPSHOT) |
| 1152 bool bootstrapping = true; | 1150 bool bootstrapping = true; |
| 1153 #elif defined(DART_PRECOMPILED_RUNTIME) | 1151 #elif defined(DART_PRECOMPILED_RUNTIME) |
| 1154 bool bootstrapping = false; | 1152 bool bootstrapping = false; |
| 1155 #else | 1153 #else |
| 1156 bool bootstrapping = is_kernel; | 1154 bool bootstrapping = is_kernel; |
| (...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1612 cls = object_store->null_class(); | 1610 cls = object_store->null_class(); |
| 1613 type = Type::NewNonParameterizedType(cls); | 1611 type = Type::NewNonParameterizedType(cls); |
| 1614 object_store->set_null_type(type); | 1612 object_store->set_null_type(type); |
| 1615 | 1613 |
| 1616 // Consider removing when/if Null becomes an ordinary class. | 1614 // Consider removing when/if Null becomes an ordinary class. |
| 1617 type = object_store->object_type(); | 1615 type = object_store->object_type(); |
| 1618 cls.set_super_type(type); | 1616 cls.set_super_type(type); |
| 1619 | 1617 |
| 1620 // Finish the initialization by compiling the bootstrap scripts containing | 1618 // Finish the initialization by compiling the bootstrap scripts containing |
| 1621 // the base interfaces and the implementation of the internal classes. | 1619 // the base interfaces and the implementation of the internal classes. |
| 1622 const Error& error = Error::Handle( | 1620 const Error& error = |
| 1623 zone, Bootstrap::DoBootstrapping(kernel_buffer, kernel_buffer_length)); | 1621 Error::Handle(zone, Bootstrap::DoBootstrapping(kernel_program)); |
| 1624 if (!error.IsNull()) { | 1622 if (!error.IsNull()) { |
| 1625 return error.raw(); | 1623 return error.raw(); |
| 1626 } | 1624 } |
| 1627 | 1625 |
| 1628 ClassFinalizer::VerifyBootstrapClasses(); | 1626 ClassFinalizer::VerifyBootstrapClasses(); |
| 1629 | 1627 |
| 1630 // Set up the intrinsic state of all functions (core, math and typed data). | 1628 // Set up the intrinsic state of all functions (core, math and typed data). |
| 1631 Intrinsifier::InitializeState(); | 1629 Intrinsifier::InitializeState(); |
| 1632 | 1630 |
| 1633 // Set up recognized state of all functions (core, math and typed data). | 1631 // Set up recognized state of all functions (core, math and typed data). |
| (...skipping 21132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 22766 return UserTag::null(); | 22764 return UserTag::null(); |
| 22767 } | 22765 } |
| 22768 | 22766 |
| 22769 | 22767 |
| 22770 const char* UserTag::ToCString() const { | 22768 const char* UserTag::ToCString() const { |
| 22771 const String& tag_label = String::Handle(label()); | 22769 const String& tag_label = String::Handle(label()); |
| 22772 return tag_label.ToCString(); | 22770 return tag_label.ToCString(); |
| 22773 } | 22771 } |
| 22774 | 22772 |
| 22775 } // namespace dart | 22773 } // namespace dart |
| OLD | NEW |