| OLD | NEW |
| 1 // Copyright 2006-2010 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2010 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 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 if (object != NULL) return object; | 427 if (object != NULL) return object; |
| 428 | 428 |
| 429 object = SlowMCAllocateRaw(size_in_bytes); | 429 object = SlowMCAllocateRaw(size_in_bytes); |
| 430 if (object != NULL) return object; | 430 if (object != NULL) return object; |
| 431 | 431 |
| 432 return Failure::RetryAfterGC(identity()); | 432 return Failure::RetryAfterGC(identity()); |
| 433 } | 433 } |
| 434 | 434 |
| 435 | 435 |
| 436 // ----------------------------------------------------------------------------- | 436 // ----------------------------------------------------------------------------- |
| 437 // LargeObjectChunk | |
| 438 | |
| 439 Address LargeObjectChunk::GetStartAddress() { | |
| 440 // Round the chunk address up to the nearest page-aligned address | |
| 441 // and return the heap object in that page. | |
| 442 Page* page = Page::FromAddress(RoundUp(address(), Page::kPageSize)); | |
| 443 return page->ObjectAreaStart(); | |
| 444 } | |
| 445 | |
| 446 | |
| 447 void LargeObjectChunk::Free(Executability executable) { | |
| 448 Isolate* isolate = | |
| 449 Page::FromAddress(RoundUp(address(), Page::kPageSize))->heap_->isolate(); | |
| 450 isolate->memory_allocator()->FreeRawMemory(address(), size(), executable); | |
| 451 } | |
| 452 | |
| 453 // ----------------------------------------------------------------------------- | |
| 454 // NewSpace | 437 // NewSpace |
| 455 | 438 |
| 456 MaybeObject* NewSpace::AllocateRawInternal(int size_in_bytes, | 439 MaybeObject* NewSpace::AllocateRawInternal(int size_in_bytes, |
| 457 AllocationInfo* alloc_info) { | 440 AllocationInfo* alloc_info) { |
| 458 Address new_top = alloc_info->top + size_in_bytes; | 441 Address new_top = alloc_info->top + size_in_bytes; |
| 459 if (new_top > alloc_info->limit) return Failure::RetryAfterGC(); | 442 if (new_top > alloc_info->limit) return Failure::RetryAfterGC(); |
| 460 | 443 |
| 461 Object* obj = HeapObject::FromAddress(alloc_info->top); | 444 Object* obj = HeapObject::FromAddress(alloc_info->top); |
| 462 alloc_info->top = new_top; | 445 alloc_info->top = new_top; |
| 463 #ifdef DEBUG | 446 #ifdef DEBUG |
| (...skipping 27 matching lines...) Expand all Loading... |
| 491 | 474 |
| 492 bool FreeListNode::IsFreeListNode(HeapObject* object) { | 475 bool FreeListNode::IsFreeListNode(HeapObject* object) { |
| 493 return object->map() == HEAP->raw_unchecked_byte_array_map() | 476 return object->map() == HEAP->raw_unchecked_byte_array_map() |
| 494 || object->map() == HEAP->raw_unchecked_one_pointer_filler_map() | 477 || object->map() == HEAP->raw_unchecked_one_pointer_filler_map() |
| 495 || object->map() == HEAP->raw_unchecked_two_pointer_filler_map(); | 478 || object->map() == HEAP->raw_unchecked_two_pointer_filler_map(); |
| 496 } | 479 } |
| 497 | 480 |
| 498 } } // namespace v8::internal | 481 } } // namespace v8::internal |
| 499 | 482 |
| 500 #endif // V8_SPACES_INL_H_ | 483 #endif // V8_SPACES_INL_H_ |
| OLD | NEW |