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

Unified Diff: runtime/vm/scavenger.h

Issue 2985863002: Changes new space allocation from simple bump pointer allocation from (Closed)
Patch Set: 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..c1d68337e53e91627cf4a0e583d1d77efc3afc5c 100644
--- a/runtime/vm/scavenger.h
+++ b/runtime/vm/scavenger.h
@@ -121,6 +121,22 @@ class Scavenger {
RawObject* FindObject(FindObjectVisitor* visitor) const;
+ uword TryAllocateNewTLAB(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()));
+ return result;
+ }
+
uword AllocateGC(intptr_t size) {
ASSERT(Utils::IsAligned(size, kObjectAlignment));
ASSERT(heap_ != Dart::vm_isolate()->heap());
@@ -143,6 +159,8 @@ class Scavenger {
ASSERT(heap_ != Dart::vm_isolate()->heap());
ASSERT(thread->IsMutatorThread());
ASSERT(thread->isolate()->IsMutatorThreadScheduled());
+ ASSERT(thread->top() <= top_);
+ ASSERT(thread->end() == top_);
#if defined(DEBUG)
if (FLAG_gc_at_alloc) {
ASSERT(!scavenging_);
@@ -215,7 +233,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 +254,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