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 6493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6504 | 6504 |
6505 void Function::SaveICDataMap( | 6505 void Function::SaveICDataMap( |
6506 const ZoneGrowableArray<const ICData*>& deopt_id_to_ic_data) const { | 6506 const ZoneGrowableArray<const ICData*>& deopt_id_to_ic_data) const { |
6507 // Compute number of ICData objectsto save. | 6507 // Compute number of ICData objectsto save. |
6508 intptr_t count = 0; | 6508 intptr_t count = 0; |
6509 for (intptr_t i = 0; i < deopt_id_to_ic_data.length(); i++) { | 6509 for (intptr_t i = 0; i < deopt_id_to_ic_data.length(); i++) { |
6510 if (deopt_id_to_ic_data[i] != NULL) { | 6510 if (deopt_id_to_ic_data[i] != NULL) { |
6511 count++; | 6511 count++; |
6512 } | 6512 } |
6513 } | 6513 } |
6514 | 6514 if (count == 0) { |
6515 const Array& a = Array::Handle(Array::New(count, Heap::kOld)); | 6515 set_ic_data_array(Object::empty_array()); |
6516 count = 0; | 6516 } else { |
6517 for (intptr_t i = 0; i < deopt_id_to_ic_data.length(); i++) { | 6517 const Array& a = Array::Handle(Array::New(count, Heap::kOld)); |
6518 if (deopt_id_to_ic_data[i] != NULL) { | 6518 count = 0; |
6519 a.SetAt(count++, *deopt_id_to_ic_data[i]); | 6519 for (intptr_t i = 0; i < deopt_id_to_ic_data.length(); i++) { |
| 6520 if (deopt_id_to_ic_data[i] != NULL) { |
| 6521 a.SetAt(count++, *deopt_id_to_ic_data[i]); |
| 6522 } |
6520 } | 6523 } |
| 6524 set_ic_data_array(a); |
6521 } | 6525 } |
6522 set_ic_data_array(a); | |
6523 } | 6526 } |
6524 | 6527 |
6525 | 6528 |
6526 void Function::RestoreICDataMap( | 6529 void Function::RestoreICDataMap( |
6527 ZoneGrowableArray<const ICData*>* deopt_id_to_ic_data) const { | 6530 ZoneGrowableArray<const ICData*>* deopt_id_to_ic_data) const { |
6528 Isolate* isolate = Isolate::Current(); | 6531 Isolate* isolate = Isolate::Current(); |
6529 const Array& saved_icd = Array::Handle(isolate, ic_data_array()); | 6532 const Array& saved_icd = Array::Handle(isolate, ic_data_array()); |
6530 if (saved_icd.Length() == 0) { | 6533 if (saved_icd.Length() == 0) { |
6531 deopt_id_to_ic_data->Clear(); | 6534 deopt_id_to_ic_data->Clear(); |
6532 return;; | 6535 return;; |
(...skipping 4159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10692 LocalVarDescriptors& result = LocalVarDescriptors::Handle(); | 10695 LocalVarDescriptors& result = LocalVarDescriptors::Handle(); |
10693 { | 10696 { |
10694 uword size = LocalVarDescriptors::InstanceSize(num_variables); | 10697 uword size = LocalVarDescriptors::InstanceSize(num_variables); |
10695 RawObject* raw = Object::Allocate(LocalVarDescriptors::kClassId, | 10698 RawObject* raw = Object::Allocate(LocalVarDescriptors::kClassId, |
10696 size, | 10699 size, |
10697 Heap::kOld); | 10700 Heap::kOld); |
10698 NoGCScope no_gc; | 10701 NoGCScope no_gc; |
10699 result ^= raw; | 10702 result ^= raw; |
10700 result.raw_ptr()->length_ = num_variables; | 10703 result.raw_ptr()->length_ = num_variables; |
10701 } | 10704 } |
10702 const Array& names = Array::Handle(Array::New(num_variables, Heap::kOld)); | 10705 const Array& names = (num_variables == 0) ? Object::empty_array() : |
| 10706 Array::Handle(Array::New(num_variables, Heap::kOld)); |
10703 result.raw_ptr()->names_ = names.raw(); | 10707 result.raw_ptr()->names_ = names.raw(); |
10704 return result.raw(); | 10708 return result.raw(); |
10705 } | 10709 } |
10706 | 10710 |
10707 | 10711 |
10708 intptr_t LocalVarDescriptors::Length() const { | 10712 intptr_t LocalVarDescriptors::Length() const { |
10709 return raw_ptr()->length_; | 10713 return raw_ptr()->length_; |
10710 } | 10714 } |
10711 | 10715 |
10712 | 10716 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10793 ExceptionHandlers& result = ExceptionHandlers::Handle(); | 10797 ExceptionHandlers& result = ExceptionHandlers::Handle(); |
10794 { | 10798 { |
10795 uword size = ExceptionHandlers::InstanceSize(num_handlers); | 10799 uword size = ExceptionHandlers::InstanceSize(num_handlers); |
10796 RawObject* raw = Object::Allocate(ExceptionHandlers::kClassId, | 10800 RawObject* raw = Object::Allocate(ExceptionHandlers::kClassId, |
10797 size, | 10801 size, |
10798 Heap::kOld); | 10802 Heap::kOld); |
10799 NoGCScope no_gc; | 10803 NoGCScope no_gc; |
10800 result ^= raw; | 10804 result ^= raw; |
10801 result.raw_ptr()->length_ = num_handlers; | 10805 result.raw_ptr()->length_ = num_handlers; |
10802 } | 10806 } |
10803 const Array& handled_types_data = Array::Handle(Array::New(num_handlers)); | 10807 const Array& handled_types_data = (num_handlers == 0) ? |
| 10808 Object::empty_array() : |
| 10809 Array::Handle(Array::New(num_handlers)); |
10804 result.set_handled_types_data(handled_types_data); | 10810 result.set_handled_types_data(handled_types_data); |
10805 return result.raw(); | 10811 return result.raw(); |
10806 } | 10812 } |
10807 | 10813 |
10808 | 10814 |
10809 const char* ExceptionHandlers::ToCString() const { | 10815 const char* ExceptionHandlers::ToCString() const { |
10810 if (Length() == 0) { | 10816 if (Length() == 0) { |
10811 return "No exception handlers\n"; | 10817 return "No exception handlers\n"; |
10812 } | 10818 } |
10813 Array& handled_types = Array::Handle(); | 10819 Array& handled_types = Array::Handle(); |
(...skipping 8344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19158 return tag_label.ToCString(); | 19164 return tag_label.ToCString(); |
19159 } | 19165 } |
19160 | 19166 |
19161 | 19167 |
19162 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { | 19168 void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const { |
19163 Instance::PrintJSONImpl(stream, ref); | 19169 Instance::PrintJSONImpl(stream, ref); |
19164 } | 19170 } |
19165 | 19171 |
19166 | 19172 |
19167 } // namespace dart | 19173 } // namespace dart |
OLD | NEW |