Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 22 matching lines...) Expand all Loading... | |
| 33 #include "list-inl.h" | 33 #include "list-inl.h" |
| 34 #include "objects.h" | 34 #include "objects.h" |
| 35 #include "v8-counters.h" | 35 #include "v8-counters.h" |
| 36 #include "store-buffer.h" | 36 #include "store-buffer.h" |
| 37 #include "store-buffer-inl.h" | 37 #include "store-buffer-inl.h" |
| 38 | 38 |
| 39 namespace v8 { | 39 namespace v8 { |
| 40 namespace internal { | 40 namespace internal { |
| 41 | 41 |
| 42 void PromotionQueue::insert(HeapObject* target, int size) { | 42 void PromotionQueue::insert(HeapObject* target, int size) { |
| 43 if (emergency_stack_ != NULL) { | |
| 44 emergency_stack_->Add(Entry(target, size)); | |
| 45 return; | |
| 46 } | |
| 47 | |
| 43 if (NewSpacePage::IsAtStart(reinterpret_cast<Address>(rear_))) { | 48 if (NewSpacePage::IsAtStart(reinterpret_cast<Address>(rear_))) { |
| 44 NewSpacePage* rear_page = | 49 NewSpacePage* rear_page = |
| 45 NewSpacePage::FromAddress(reinterpret_cast<Address>(rear_)); | 50 NewSpacePage::FromAddress(reinterpret_cast<Address>(rear_)); |
| 46 ASSERT(!rear_page->prev_page()->is_anchor()); | 51 ASSERT(!rear_page->prev_page()->is_anchor()); |
| 47 rear_ = reinterpret_cast<intptr_t*>(rear_page->prev_page()->body_limit()); | 52 rear_ = reinterpret_cast<intptr_t*>(rear_page->prev_page()->body_limit()); |
| 48 } | 53 } |
| 54 | |
| 55 Page* rear_page = Page::FromAddress(reinterpret_cast<Address>(rear_ - 2)); | |
| 56 Page* limit_page = Page::FromAllocationTop(reinterpret_cast<Address>(limit_)); | |
| 57 if (rear_page == limit_page && (rear_ - 2) < limit_) { | |
| 58 RelocateQueueHead(); | |
|
Erik Corry
2011/11/07 16:35:25
This one asserts that there is something to reloca
| |
| 59 emergency_stack_->Add(Entry(target, size)); | |
| 60 return; | |
| 61 } | |
| 62 | |
| 49 *(--rear_) = reinterpret_cast<intptr_t>(target); | 63 *(--rear_) = reinterpret_cast<intptr_t>(target); |
| 50 *(--rear_) = size; | 64 *(--rear_) = size; |
| 51 // Assert no overflow into live objects. | 65 // Assert no overflow into live objects. |
| 52 #ifdef DEBUG | 66 #ifdef DEBUG |
| 53 SemiSpace::AssertValidRange(HEAP->new_space()->top(), | 67 SemiSpace::AssertValidRange(HEAP->new_space()->top(), |
| 54 reinterpret_cast<Address>(rear_)); | 68 reinterpret_cast<Address>(rear_)); |
| 55 #endif | 69 #endif |
| 56 } | 70 } |
| 57 | 71 |
| 58 | 72 |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 676 | 690 |
| 677 | 691 |
| 678 Heap* _inline_get_heap_() { | 692 Heap* _inline_get_heap_() { |
| 679 return HEAP; | 693 return HEAP; |
| 680 } | 694 } |
| 681 | 695 |
| 682 | 696 |
| 683 } } // namespace v8::internal | 697 } } // namespace v8::internal |
| 684 | 698 |
| 685 #endif // V8_HEAP_INL_H_ | 699 #endif // V8_HEAP_INL_H_ |
| OLD | NEW |