From cad442f87988b1a8081e210bc1d5adc66f990424 Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Wed, 17 Oct 2018 17:17:39 -0700 Subject: [PATCH] Provide an estimate of EngineLayer memory usage to the Dart GC See https://github.com/flutter/flutter/issues/23171 --- lib/ui/painting/engine_layer.cc | 7 +++++++ lib/ui/painting/engine_layer.h | 3 +++ 2 files changed, 10 insertions(+) diff --git a/lib/ui/painting/engine_layer.cc b/lib/ui/painting/engine_layer.cc index 5ff6e96f61574..afa3876ffb653 100644 --- a/lib/ui/painting/engine_layer.cc +++ b/lib/ui/painting/engine_layer.cc @@ -17,6 +17,13 @@ namespace blink { EngineLayer::~EngineLayer() = default; +size_t EngineLayer::GetAllocationSize() { + // Provide an approximation of the total memory impact of this object to the + // Dart GC. The ContainerLayer may hold references to a tree of other layers, + // which in turn may contain Skia objects. + return 3000; +}; + IMPLEMENT_WRAPPERTYPEINFO(ui, EngineLayer); #define FOR_EACH_BINDING(V) // nothing to bind diff --git a/lib/ui/painting/engine_layer.h b/lib/ui/painting/engine_layer.h index e79b5f8e63967..c578e88c9e88f 100644 --- a/lib/ui/painting/engine_layer.h +++ b/lib/ui/painting/engine_layer.h @@ -22,6 +22,9 @@ class EngineLayer : public RefCountedDartWrappable { public: ~EngineLayer() override; + + size_t GetAllocationSize() override; + static fml::RefPtr MakeRetained( std::shared_ptr layer) { return fml::MakeRefCounted(layer);