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 12002 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12013 StorePointer(&raw_ptr()->stackmaps_, maps.raw()); | 12013 StorePointer(&raw_ptr()->stackmaps_, maps.raw()); |
12014 } | 12014 } |
12015 | 12015 |
12016 | 12016 |
12017 void Code::set_deopt_info_array(const Array& array) const { | 12017 void Code::set_deopt_info_array(const Array& array) const { |
12018 ASSERT(array.IsOld()); | 12018 ASSERT(array.IsOld()); |
12019 StorePointer(&raw_ptr()->deopt_info_array_, array.raw()); | 12019 StorePointer(&raw_ptr()->deopt_info_array_, array.raw()); |
12020 } | 12020 } |
12021 | 12021 |
12022 | 12022 |
12023 void Code::set_object_table(const Array& array) const { | |
12024 ASSERT(array.IsOld()); | |
12025 StorePointer(&raw_ptr()->object_table_, array.raw()); | |
12026 } | |
12027 | |
12028 | |
12029 void Code::set_static_calls_target_table(const Array& value) const { | 12023 void Code::set_static_calls_target_table(const Array& value) const { |
12030 StorePointer(&raw_ptr()->static_calls_target_table_, value.raw()); | 12024 StorePointer(&raw_ptr()->static_calls_target_table_, value.raw()); |
12031 #if defined(DEBUG) | 12025 #if defined(DEBUG) |
12032 // Check that the table is sorted by pc offsets. | 12026 // Check that the table is sorted by pc offsets. |
12033 // FlowGraphCompiler::AddStaticCallTarget adds pc-offsets to the table while | 12027 // FlowGraphCompiler::AddStaticCallTarget adds pc-offsets to the table while |
12034 // emitting assembly. This guarantees that every succeeding pc-offset is | 12028 // emitting assembly. This guarantees that every succeeding pc-offset is |
12035 // larger than the previously added one. | 12029 // larger than the previously added one. |
12036 for (intptr_t i = kSCallTableEntryLength; | 12030 for (intptr_t i = kSCallTableEntryLength; |
12037 i < value.Length(); | 12031 i < value.Length(); |
12038 i += kSCallTableEntryLength) { | 12032 i += kSCallTableEntryLength) { |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12268 instrs.raw()->StorePointer(reinterpret_cast<RawObject**>(addr), | 12262 instrs.raw()->StorePointer(reinterpret_cast<RawObject**>(addr), |
12269 object->raw()); | 12263 object->raw()); |
12270 } | 12264 } |
12271 | 12265 |
12272 // Hook up Code and Instructions objects. | 12266 // Hook up Code and Instructions objects. |
12273 instrs.set_code(code.raw()); | 12267 instrs.set_code(code.raw()); |
12274 code.set_instructions(instrs.raw()); | 12268 code.set_instructions(instrs.raw()); |
12275 code.set_is_alive(true); | 12269 code.set_is_alive(true); |
12276 | 12270 |
12277 // Set object pool in Instructions object. | 12271 // Set object pool in Instructions object. |
12278 const GrowableObjectArray& object_pool = assembler->object_pool(); | 12272 const GrowableObjectArray& object_pool = assembler->object_pool_data(); |
12279 if (object_pool.IsNull()) { | 12273 if (object_pool.IsNull()) { |
12280 instrs.set_object_pool(Object::empty_array().raw()); | 12274 instrs.set_object_pool(Object::empty_array().raw()); |
12281 } else { | 12275 } else { |
12282 // TODO(regis): Once MakeArray takes a Heap::Space argument, call it here | 12276 // TODO(regis): Once MakeArray takes a Heap::Space argument, call it here |
12283 // with Heap::kOld and change the ARM and MIPS assemblers to work with a | 12277 // with Heap::kOld and change the ARM and MIPS assemblers to work with a |
12284 // GrowableObjectArray in new space. | 12278 // GrowableObjectArray in new space. |
12285 instrs.set_object_pool(Array::MakeArray(object_pool)); | 12279 instrs.set_object_pool(Array::MakeArray(object_pool)); |
12286 } | 12280 } |
12287 if (FLAG_write_protect_code) { | 12281 if (FLAG_write_protect_code) { |
12288 uword address = RawObject::ToAddr(instrs.raw()); | 12282 uword address = RawObject::ToAddr(instrs.raw()); |
(...skipping 8370 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
20659 return tag_label.ToCString(); | 20653 return tag_label.ToCString(); |
20660 } | 20654 } |
20661 | 20655 |
20662 | 20656 |
20663 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 20657 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
20664 Instance::PrintJSONImpl(stream, ref); | 20658 Instance::PrintJSONImpl(stream, ref); |
20665 } | 20659 } |
20666 | 20660 |
20667 | 20661 |
20668 } // namespace dart | 20662 } // namespace dart |
OLD | NEW |