| 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 | 
|---|