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

Unified Diff: runtime/vm/scavenger.h

Issue 2985863002: Changes new space allocation from simple bump pointer allocation from (Closed)
Patch Set: Zeroes out TLAB when needed. Changes variable and fn names Created 3 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/scavenger.h
diff --git a/runtime/vm/scavenger.h b/runtime/vm/scavenger.h
index 1fd7c9fe2bd88b93e8f26e2c6b7964e11a0408bc..99ecd21e52dc1c767f991302c5c86dfde179aaa2 100644
--- a/runtime/vm/scavenger.h
+++ b/runtime/vm/scavenger.h
@@ -121,6 +121,25 @@ class Scavenger {
RawObject* FindObject(FindObjectVisitor* visitor) const;
+ uword TryAllocateNewTLAB(Thread* thread, intptr_t size) {
+ ASSERT(Utils::IsAligned(size, kObjectAlignment));
+ ASSERT(heap_ != Dart::vm_isolate()->heap());
+ ASSERT(!scavenging_);
+ uword result = top_;
+ intptr_t remaining = end_ - top_;
+ if (remaining < size) {
+ return 0;
+ }
+ ASSERT(to_->Contains(result));
+ ASSERT((result & kObjectAlignmentMask) == object_alignment_);
+ top_ += size;
+ ASSERT(to_->Contains(top_) || (top_ == to_->end()));
+ ASSERT(result < top_);
+ thread->set_top(result);
+ thread->set_end(top_);
+ return result;
+ }
+
uword AllocateGC(intptr_t size) {
ASSERT(Utils::IsAligned(size, kObjectAlignment));
ASSERT(heap_ != Dart::vm_isolate()->heap());
@@ -143,6 +162,8 @@ class Scavenger {
ASSERT(heap_ != Dart::vm_isolate()->heap());
ASSERT(thread->IsMutatorThread());
ASSERT(thread->isolate()->IsMutatorThreadScheduled());
+ ASSERT(thread->top() <= top_);
+ ASSERT(thread->end() == 0 || thread->end() == top_);
rmacnak 2017/07/26 21:30:30 ASSERT((thread->end() == 0) || (thread->end() == t
danunez 2017/07/26 22:07:12 Done.
#if defined(DEBUG)
if (FLAG_gc_at_alloc) {
ASSERT(!scavenging_);
@@ -215,7 +236,9 @@ class Scavenger {
void AllocateExternal(intptr_t size);
void FreeExternal(intptr_t size);
- void FlushTLS() const;
+ uword FlushTLS() const;
+ void UnflushTLS(uword value) const;
+ uword FirstObjectStart() const { return to_->start() | object_alignment_; }
private:
// Ids for time and data records in Heap::GCStats.
@@ -234,7 +257,6 @@ class Scavenger {
kToKBAfterStoreBuffer = 3
};
- uword FirstObjectStart() const { return to_->start() | object_alignment_; }
SemiSpace* Prologue(Isolate* isolate, bool invoke_api_callbacks);
void IterateStoreBuffers(Isolate* isolate, ScavengerVisitor* visitor);
void IterateObjectIdTable(Isolate* isolate, ScavengerVisitor* visitor);

Powered by Google App Engine
This is Rietveld 408576698