OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 5263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5274 } | 5274 } |
5275 | 5275 |
5276 return EnsureDoubleAligned(this, object, size); | 5276 return EnsureDoubleAligned(this, object, size); |
5277 } | 5277 } |
5278 | 5278 |
5279 | 5279 |
5280 MaybeObject* Heap::AllocateConstantPoolArray(int number_of_int64_entries, | 5280 MaybeObject* Heap::AllocateConstantPoolArray(int number_of_int64_entries, |
5281 int number_of_code_ptr_entries, | 5281 int number_of_code_ptr_entries, |
5282 int number_of_heap_ptr_entries, | 5282 int number_of_heap_ptr_entries, |
5283 int number_of_int32_entries) { | 5283 int number_of_int32_entries) { |
5284 ASSERT(number_of_int64_entries > 0 || number_of_code_ptr_entries > 0 || | 5284 CHECK(number_of_int64_entries >= 0 && |
5285 number_of_heap_ptr_entries > 0 || number_of_int32_entries > 0); | 5285 number_of_int64_entries <= ConstantPoolArray::kMaxEntriesPerType && |
| 5286 number_of_code_ptr_entries >= 0 && |
| 5287 number_of_code_ptr_entries <= ConstantPoolArray::kMaxEntriesPerType && |
| 5288 number_of_heap_ptr_entries >= 0 && |
| 5289 number_of_heap_ptr_entries <= ConstantPoolArray::kMaxEntriesPerType && |
| 5290 number_of_int32_entries >= 0 && |
| 5291 number_of_int32_entries <= ConstantPoolArray::kMaxEntriesPerType); |
5286 int size = ConstantPoolArray::SizeFor(number_of_int64_entries, | 5292 int size = ConstantPoolArray::SizeFor(number_of_int64_entries, |
5287 number_of_code_ptr_entries, | 5293 number_of_code_ptr_entries, |
5288 number_of_heap_ptr_entries, | 5294 number_of_heap_ptr_entries, |
5289 number_of_int32_entries); | 5295 number_of_int32_entries); |
5290 #ifndef V8_HOST_ARCH_64_BIT | 5296 #ifndef V8_HOST_ARCH_64_BIT |
5291 size += kPointerSize; | 5297 size += kPointerSize; |
5292 #endif | 5298 #endif |
5293 AllocationSpace space = SelectSpace(size, OLD_POINTER_SPACE, TENURED); | 5299 AllocationSpace space = SelectSpace(size, OLD_POINTER_SPACE, TENURED); |
5294 | 5300 |
5295 HeapObject* object; | 5301 HeapObject* object; |
5296 { MaybeObject* maybe_object = AllocateRaw(size, space, OLD_POINTER_SPACE); | 5302 { MaybeObject* maybe_object = AllocateRaw(size, space, OLD_POINTER_SPACE); |
5297 if (!maybe_object->To<HeapObject>(&object)) return maybe_object; | 5303 if (!maybe_object->To<HeapObject>(&object)) return maybe_object; |
5298 } | 5304 } |
5299 object = EnsureDoubleAligned(this, object, size); | 5305 object = EnsureDoubleAligned(this, object, size); |
5300 HeapObject::cast(object)->set_map_no_write_barrier(constant_pool_array_map()); | 5306 HeapObject::cast(object)->set_map_no_write_barrier(constant_pool_array_map()); |
5301 | 5307 |
5302 ConstantPoolArray* constant_pool = | 5308 ConstantPoolArray* constant_pool = |
5303 reinterpret_cast<ConstantPoolArray*>(object); | 5309 reinterpret_cast<ConstantPoolArray*>(object); |
5304 constant_pool->SetEntryCounts(number_of_int64_entries, | 5310 constant_pool->Init(number_of_int64_entries, |
5305 number_of_code_ptr_entries, | 5311 number_of_code_ptr_entries, |
5306 number_of_heap_ptr_entries, | 5312 number_of_heap_ptr_entries, |
5307 number_of_int32_entries); | 5313 number_of_int32_entries); |
5308 if (number_of_code_ptr_entries > 0) { | 5314 if (number_of_code_ptr_entries > 0) { |
5309 int offset = | 5315 int offset = |
5310 constant_pool->OffsetOfElementAt(constant_pool->first_code_ptr_index()); | 5316 constant_pool->OffsetOfElementAt(constant_pool->first_code_ptr_index()); |
5311 MemsetPointer( | 5317 MemsetPointer( |
5312 reinterpret_cast<Address*>(HeapObject::RawField(constant_pool, offset)), | 5318 reinterpret_cast<Address*>(HeapObject::RawField(constant_pool, offset)), |
5313 isolate()->builtins()->builtin(Builtins::kIllegal)->entry(), | 5319 isolate()->builtins()->builtin(Builtins::kIllegal)->entry(), |
5314 number_of_code_ptr_entries); | 5320 number_of_code_ptr_entries); |
5315 } | 5321 } |
5316 if (number_of_heap_ptr_entries > 0) { | 5322 if (number_of_heap_ptr_entries > 0) { |
5317 int offset = | 5323 int offset = |
5318 constant_pool->OffsetOfElementAt(constant_pool->first_heap_ptr_index()); | 5324 constant_pool->OffsetOfElementAt(constant_pool->first_heap_ptr_index()); |
5319 MemsetPointer( | 5325 MemsetPointer( |
5320 HeapObject::RawField(constant_pool, offset), | 5326 HeapObject::RawField(constant_pool, offset), |
5321 undefined_value(), | 5327 undefined_value(), |
5322 number_of_heap_ptr_entries); | 5328 number_of_heap_ptr_entries); |
5323 } | 5329 } |
5324 return constant_pool; | 5330 return constant_pool; |
5325 } | 5331 } |
5326 | 5332 |
5327 | 5333 |
5328 MaybeObject* Heap::AllocateEmptyConstantPoolArray() { | 5334 MaybeObject* Heap::AllocateEmptyConstantPoolArray() { |
5329 int size = ConstantPoolArray::SizeFor(0, 0, 0, 0); | 5335 int size = ConstantPoolArray::SizeFor(0, 0, 0, 0); |
5330 Object* result; | 5336 Object* result; |
5331 { MaybeObject* maybe_result = | 5337 { MaybeObject* maybe_result = |
5332 AllocateRaw(size, OLD_DATA_SPACE, OLD_DATA_SPACE); | 5338 AllocateRaw(size, OLD_DATA_SPACE, OLD_DATA_SPACE); |
5333 if (!maybe_result->ToObject(&result)) return maybe_result; | 5339 if (!maybe_result->ToObject(&result)) return maybe_result; |
5334 } | 5340 } |
5335 HeapObject::cast(result)->set_map_no_write_barrier(constant_pool_array_map()); | 5341 HeapObject::cast(result)->set_map_no_write_barrier(constant_pool_array_map()); |
5336 ConstantPoolArray::cast(result)->SetEntryCounts(0, 0, 0, 0); | 5342 ConstantPoolArray::cast(result)->Init(0, 0, 0, 0); |
5337 return result; | 5343 return result; |
5338 } | 5344 } |
5339 | 5345 |
5340 | 5346 |
5341 MaybeObject* Heap::AllocateHashTable(int length, PretenureFlag pretenure) { | 5347 MaybeObject* Heap::AllocateHashTable(int length, PretenureFlag pretenure) { |
5342 Object* result; | 5348 Object* result; |
5343 { MaybeObject* maybe_result = AllocateFixedArray(length, pretenure); | 5349 { MaybeObject* maybe_result = AllocateFixedArray(length, pretenure); |
5344 if (!maybe_result->ToObject(&result)) return maybe_result; | 5350 if (!maybe_result->ToObject(&result)) return maybe_result; |
5345 } | 5351 } |
5346 reinterpret_cast<HeapObject*>(result)->set_map_no_write_barrier( | 5352 reinterpret_cast<HeapObject*>(result)->set_map_no_write_barrier( |
(...skipping 2342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7689 static_cast<int>(object_sizes_last_time_[index])); | 7695 static_cast<int>(object_sizes_last_time_[index])); |
7690 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) | 7696 CODE_AGE_LIST_COMPLETE(ADJUST_LAST_TIME_OBJECT_COUNT) |
7691 #undef ADJUST_LAST_TIME_OBJECT_COUNT | 7697 #undef ADJUST_LAST_TIME_OBJECT_COUNT |
7692 | 7698 |
7693 OS::MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); | 7699 OS::MemCopy(object_counts_last_time_, object_counts_, sizeof(object_counts_)); |
7694 OS::MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); | 7700 OS::MemCopy(object_sizes_last_time_, object_sizes_, sizeof(object_sizes_)); |
7695 ClearObjectStats(); | 7701 ClearObjectStats(); |
7696 } | 7702 } |
7697 | 7703 |
7698 } } // namespace v8::internal | 7704 } } // namespace v8::internal |
OLD | NEW |