Commit 1dba3ee4 authored by Michael Lippautz's avatar Michael Lippautz Committed by Commit Bot

heap: Ephemeron processing: Remove strongification parameter

In the strongification case the callbacks should return false
indicating that the key is alive and value should be traced.

Bug: 1019191
Change-Id: I508dcb6fa90d91417788302aef1f448a8fc9a744
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1897928Reviewed-by: default avatarOmer Katz <omerkatz@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712478}
parent 040e0b89
...@@ -190,7 +190,6 @@ class GC_PLUGIN_IGNORE( ...@@ -190,7 +190,6 @@ class GC_PLUGIN_IGNORE(
void*) final; void*) final;
bool VisitEphemeronKeyValuePair(void*, bool VisitEphemeronKeyValuePair(void*,
void*, void*,
bool,
EphemeronTracingCallback, EphemeronTracingCallback,
EphemeronTracingCallback) final; EphemeronTracingCallback) final;
...@@ -732,10 +731,8 @@ void V8EmbedderGraphBuilder::VisitBackingStoreWeakly( ...@@ -732,10 +731,8 @@ void V8EmbedderGraphBuilder::VisitBackingStoreWeakly(
bool V8EmbedderGraphBuilder::VisitEphemeronKeyValuePair( bool V8EmbedderGraphBuilder::VisitEphemeronKeyValuePair(
void* key, void* key,
void* value, void* value,
bool strong_handling,
EphemeronTracingCallback key_trace_callback, EphemeronTracingCallback key_trace_callback,
EphemeronTracingCallback value_trace_callback) { EphemeronTracingCallback value_trace_callback) {
DCHECK(strong_handling);
ephemeron_worklist_.push_back(std::unique_ptr<EphemeronItem>{ ephemeron_worklist_.push_back(std::unique_ptr<EphemeronItem>{
new EphemeronItem(key, value, key_trace_callback, value_trace_callback)}); new EphemeronItem(key, value, key_trace_callback, value_trace_callback)});
return true; return true;
......
...@@ -59,13 +59,14 @@ class BackingVisitor : public Visitor { ...@@ -59,13 +59,14 @@ class BackingVisitor : public Visitor {
bool VisitEphemeronKeyValuePair( bool VisitEphemeronKeyValuePair(
void* key, void* key,
void* value, void* value,
bool strong_handling,
EphemeronTracingCallback key_trace_callback, EphemeronTracingCallback key_trace_callback,
EphemeronTracingCallback value_trace_callback) final { EphemeronTracingCallback value_trace_callback) final {
const bool key_is_dead = key_trace_callback(this, key); const bool key_is_dead = key_trace_callback(this, key);
if (key_is_dead && !strong_handling) if (key_is_dead)
return true; return true;
return value_trace_callback(this, value); const bool value_is_dead = value_trace_callback(this, value);
DCHECK(!value_is_dead);
return false;
} }
// Unused overrides. // Unused overrides.
......
...@@ -110,13 +110,14 @@ void MarkingVisitorCommon::VisitBackingStoreWeakly( ...@@ -110,13 +110,14 @@ void MarkingVisitorCommon::VisitBackingStoreWeakly(
bool MarkingVisitorCommon::VisitEphemeronKeyValuePair( bool MarkingVisitorCommon::VisitEphemeronKeyValuePair(
void* key, void* key,
void* value, void* value,
bool strong_handling,
EphemeronTracingCallback key_trace_callback, EphemeronTracingCallback key_trace_callback,
EphemeronTracingCallback value_trace_callback) { EphemeronTracingCallback value_trace_callback) {
const bool key_is_dead = key_trace_callback(this, key); const bool key_is_dead = key_trace_callback(this, key);
if (key_is_dead && !strong_handling) if (key_is_dead)
return true; return true;
return value_trace_callback(this, value); const bool value_is_dead = value_trace_callback(this, value);
DCHECK(!value_is_dead);
return false;
} }
void MarkingVisitorCommon::VisitBackingStoreOnly(void* object, void MarkingVisitorCommon::VisitBackingStoreOnly(void* object,
......
...@@ -34,7 +34,6 @@ class PLATFORM_EXPORT MarkingVisitorCommon : public Visitor { ...@@ -34,7 +34,6 @@ class PLATFORM_EXPORT MarkingVisitorCommon : public Visitor {
void*) final; void*) final;
bool VisitEphemeronKeyValuePair(void*, bool VisitEphemeronKeyValuePair(void*,
void*, void*,
bool,
EphemeronTracingCallback, EphemeronTracingCallback,
EphemeronTracingCallback) final; EphemeronTracingCallback) final;
......
...@@ -333,7 +333,7 @@ struct TraceKeyValuePairTraits { ...@@ -333,7 +333,7 @@ struct TraceKeyValuePairTraits {
template <> template <>
static bool Trace<true>(Visitor* visitor, Key& key, Value& value) { static bool Trace<true>(Visitor* visitor, Key& key, Value& value) {
return visitor->VisitEphemeronKeyValuePair( return visitor->VisitEphemeronKeyValuePair(
&key, &value, Strongify, &key, &value,
TraceCollectionIfEnabled < Strongify ? WTF::kNoWeakHandling TraceCollectionIfEnabled < Strongify ? WTF::kNoWeakHandling
: KeyTraits::kWeakHandlingFlag, : KeyTraits::kWeakHandlingFlag,
Key, KeyTraits > ::Trace, Key, KeyTraits > ::Trace,
......
...@@ -226,7 +226,6 @@ class PLATFORM_EXPORT Visitor { ...@@ -226,7 +226,6 @@ class PLATFORM_EXPORT Visitor {
virtual bool VisitEphemeronKeyValuePair( virtual bool VisitEphemeronKeyValuePair(
void* key, void* key,
void* value, void* value,
bool strong_handling,
EphemeronTracingCallback key_trace_callback, EphemeronTracingCallback key_trace_callback,
EphemeronTracingCallback value_trace_callback) { EphemeronTracingCallback value_trace_callback) {
return true; return true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment