Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(225)

Side by Side Diff: src/heap/heap-inl.h

Issue 557243002: Remove guard page mechanism from promotion queue. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/heap/heap.cc ('k') | src/heap/spaces.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_HEAP_HEAP_INL_H_ 5 #ifndef V8_HEAP_HEAP_INL_H_
6 #define V8_HEAP_HEAP_INL_H_ 6 #define V8_HEAP_HEAP_INL_H_
7 7
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "src/base/platform/platform.h" 10 #include "src/base/platform/platform.h"
(...skipping 13 matching lines...) Expand all
24 if (emergency_stack_ != NULL) { 24 if (emergency_stack_ != NULL) {
25 emergency_stack_->Add(Entry(target, size)); 25 emergency_stack_->Add(Entry(target, size));
26 return; 26 return;
27 } 27 }
28 28
29 if (NewSpacePage::IsAtStart(reinterpret_cast<Address>(rear_))) { 29 if (NewSpacePage::IsAtStart(reinterpret_cast<Address>(rear_))) {
30 NewSpacePage* rear_page = 30 NewSpacePage* rear_page =
31 NewSpacePage::FromAddress(reinterpret_cast<Address>(rear_)); 31 NewSpacePage::FromAddress(reinterpret_cast<Address>(rear_));
32 DCHECK(!rear_page->prev_page()->is_anchor()); 32 DCHECK(!rear_page->prev_page()->is_anchor());
33 rear_ = reinterpret_cast<intptr_t*>(rear_page->prev_page()->area_end()); 33 rear_ = reinterpret_cast<intptr_t*>(rear_page->prev_page()->area_end());
34 ActivateGuardIfOnTheSamePage();
35 } 34 }
36 35
37 if (guard_) { 36 if ((rear_ - 2) < limit_) {
38 DCHECK(GetHeadPage() == 37 RelocateQueueHead();
39 Page::FromAllocationTop(reinterpret_cast<Address>(limit_))); 38 emergency_stack_->Add(Entry(target, size));
40 39 return;
41 if ((rear_ - 2) < limit_) {
42 RelocateQueueHead();
43 emergency_stack_->Add(Entry(target, size));
44 return;
45 }
46 } 40 }
47 41
48 *(--rear_) = reinterpret_cast<intptr_t>(target); 42 *(--rear_) = reinterpret_cast<intptr_t>(target);
49 *(--rear_) = size; 43 *(--rear_) = size;
50 // Assert no overflow into live objects. 44 // Assert no overflow into live objects.
51 #ifdef DEBUG 45 #ifdef DEBUG
52 SemiSpace::AssertValidRange(target->GetIsolate()->heap()->new_space()->top(), 46 SemiSpace::AssertValidRange(target->GetIsolate()->heap()->new_space()->top(),
53 reinterpret_cast<Address>(rear_)); 47 reinterpret_cast<Address>(rear_));
54 #endif 48 #endif
55 } 49 }
56 50
57 51
58 void PromotionQueue::ActivateGuardIfOnTheSamePage() {
59 guard_ = guard_ ||
60 heap_->new_space()->active_space()->current_page()->address() ==
61 GetHeadPage()->address();
62 }
63
64
65 template <> 52 template <>
66 bool inline Heap::IsOneByte(Vector<const char> str, int chars) { 53 bool inline Heap::IsOneByte(Vector<const char> str, int chars) {
67 // TODO(dcarney): incorporate Latin-1 check when Latin-1 is supported? 54 // TODO(dcarney): incorporate Latin-1 check when Latin-1 is supported?
68 // ASCII only check. 55 // ASCII only check.
69 return chars == str.length(); 56 return chars == str.length();
70 } 57 }
71 58
72 59
73 template <> 60 template <>
74 bool inline Heap::IsOneByte(String* str, int chars) { 61 bool inline Heap::IsOneByte(String* str, int chars) {
(...skipping 705 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 767
781 void VerifySmisVisitor::VisitPointers(Object** start, Object** end) { 768 void VerifySmisVisitor::VisitPointers(Object** start, Object** end) {
782 for (Object** current = start; current < end; current++) { 769 for (Object** current = start; current < end; current++) {
783 CHECK((*current)->IsSmi()); 770 CHECK((*current)->IsSmi());
784 } 771 }
785 } 772 }
786 } 773 }
787 } // namespace v8::internal 774 } // namespace v8::internal
788 775
789 #endif // V8_HEAP_HEAP_INL_H_ 776 #endif // V8_HEAP_HEAP_INL_H_
OLDNEW
« no previous file with comments | « src/heap/heap.cc ('k') | src/heap/spaces.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698