| OLD | NEW | 
|---|
| 1 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 "vm/hash_table.h" | 7 #include "vm/hash_table.h" | 
| 8 #include "vm/isolate_reload.h" | 8 #include "vm/isolate_reload.h" | 
| 9 #include "vm/log.h" | 9 #include "vm/log.h" | 
| 10 #include "vm/resolver.h" | 10 #include "vm/resolver.h" | 
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 60 void Code::ResetICDatas(Zone* zone) const { | 60 void Code::ResetICDatas(Zone* zone) const { | 
| 61   // Iterate over the Code's object pool and reset all ICDatas. | 61   // Iterate over the Code's object pool and reset all ICDatas. | 
| 62 #ifdef TARGET_ARCH_IA32 | 62 #ifdef TARGET_ARCH_IA32 | 
| 63   // IA32 does not have an object pool, but, we can iterate over all | 63   // IA32 does not have an object pool, but, we can iterate over all | 
| 64   // embedded objects by using the variable length data section. | 64   // embedded objects by using the variable length data section. | 
| 65   if (!is_alive()) { | 65   if (!is_alive()) { | 
| 66     return; | 66     return; | 
| 67   } | 67   } | 
| 68   const Instructions& instrs = Instructions::Handle(zone, instructions()); | 68   const Instructions& instrs = Instructions::Handle(zone, instructions()); | 
| 69   ASSERT(!instrs.IsNull()); | 69   ASSERT(!instrs.IsNull()); | 
| 70   uword base_address = instrs.EntryPoint(); | 70   uword base_address = instrs.PayloadStart(); | 
| 71   Object& object = Object::Handle(zone); | 71   Object& object = Object::Handle(zone); | 
| 72   intptr_t offsets_length = pointer_offsets_length(); | 72   intptr_t offsets_length = pointer_offsets_length(); | 
| 73   const int32_t* offsets = raw_ptr()->data(); | 73   const int32_t* offsets = raw_ptr()->data(); | 
| 74   for (intptr_t i = 0; i < offsets_length; i++) { | 74   for (intptr_t i = 0; i < offsets_length; i++) { | 
| 75     int32_t offset = offsets[i]; | 75     int32_t offset = offsets[i]; | 
| 76     RawObject** object_ptr = | 76     RawObject** object_ptr = | 
| 77         reinterpret_cast<RawObject**>(base_address + offset); | 77         reinterpret_cast<RawObject**>(base_address + offset); | 
| 78     RawObject* raw_object = *object_ptr; | 78     RawObject* raw_object = *object_ptr; | 
| 79     if (!raw_object->IsHeapObject()) { | 79     if (!raw_object->IsHeapObject()) { | 
| 80       continue; | 80       continue; | 
| (...skipping 672 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 753       const Array& data_array = | 753       const Array& data_array = | 
| 754           Array::Handle(zone, CachedEmptyICDataArray(num_args)); | 754           Array::Handle(zone, CachedEmptyICDataArray(num_args)); | 
| 755       set_ic_data_array(data_array); | 755       set_ic_data_array(data_array); | 
| 756     } | 756     } | 
| 757   } | 757   } | 
| 758 } | 758 } | 
| 759 | 759 | 
| 760 #endif  // !PRODUCT | 760 #endif  // !PRODUCT | 
| 761 | 761 | 
| 762 }   // namespace dart. | 762 }   // namespace dart. | 
| OLD | NEW | 
|---|