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

Unified Diff: Source/core/svg/SVGPathUtilities.cpp

Issue 678163002: Oilpan: move SVG property hierarchy to the heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased upto r185213 Created 6 years, 1 month 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
« no previous file with comments | « Source/core/svg/SVGPathUtilities.h ('k') | Source/core/svg/SVGPatternElement.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/svg/SVGPathUtilities.cpp
diff --git a/Source/core/svg/SVGPathUtilities.cpp b/Source/core/svg/SVGPathUtilities.cpp
index 6b5a06ab37c2c8e50dbb88f6c0acae4b45db83af..6fca24e49b9f40c280263068545263f84495b45f 100644
--- a/Source/core/svg/SVGPathUtilities.cpp
+++ b/Source/core/svg/SVGPathUtilities.cpp
@@ -25,6 +25,7 @@
#include "core/svg/SVGPathBuilder.h"
#include "core/svg/SVGPathByteStreamBuilder.h"
#include "core/svg/SVGPathByteStreamSource.h"
+#include "core/svg/SVGPathElement.h"
#include "core/svg/SVGPathParser.h"
#include "core/svg/SVGPathSegListBuilder.h"
#include "core/svg/SVGPathSegListSource.h"
@@ -37,62 +38,44 @@ namespace blink {
static SVGPathBuilder* globalSVGPathBuilder(Path& result)
{
- static SVGPathBuilder* s_builder = 0;
- if (!s_builder)
- s_builder = new SVGPathBuilder;
-
- s_builder->setCurrentPath(&result);
- return s_builder;
+ DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGPathBuilder>, pathBuilder, (adoptPtrWillBeNoop(new SVGPathBuilder())));
+ pathBuilder->setCurrentPath(&result);
+ return pathBuilder.get();
}
static SVGPathByteStreamBuilder* globalSVGPathByteStreamBuilder(SVGPathByteStream* result)
{
- static SVGPathByteStreamBuilder* s_builder = 0;
- if (!s_builder)
- s_builder = new SVGPathByteStreamBuilder;
-
- s_builder->setCurrentByteStream(result);
- return s_builder;
+ DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGPathByteStreamBuilder>, pathBuilder, (adoptPtrWillBeNoop(new SVGPathByteStreamBuilder())));
+ pathBuilder->setCurrentByteStream(result);
+ return pathBuilder.get();
}
static SVGPathStringBuilder* globalSVGPathStringBuilder()
{
- static SVGPathStringBuilder* s_builder = 0;
- if (!s_builder)
- s_builder = new SVGPathStringBuilder;
-
- return s_builder;
+ DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGPathStringBuilder>, pathBuilder, (adoptPtrWillBeNoop(new SVGPathStringBuilder())));
+ return pathBuilder.get();
}
static SVGPathTraversalStateBuilder* globalSVGPathTraversalStateBuilder(PathTraversalState& traversalState, float length)
{
- static SVGPathTraversalStateBuilder* s_builder = 0;
- if (!s_builder)
- s_builder = new SVGPathTraversalStateBuilder;
-
- s_builder->setCurrentTraversalState(&traversalState);
- s_builder->setDesiredLength(length);
- return s_builder;
+ DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGPathTraversalStateBuilder>, pathBuilder, (adoptPtrWillBeNoop(new SVGPathTraversalStateBuilder())));
+ pathBuilder->setCurrentTraversalState(&traversalState);
+ pathBuilder->setDesiredLength(length);
+ return pathBuilder.get();
}
static SVGPathParser* globalSVGPathParser(SVGPathSource* source, SVGPathConsumer* consumer)
{
- static SVGPathParser* s_parser = 0;
- if (!s_parser)
- s_parser = new SVGPathParser;
-
- s_parser->setCurrentSource(source);
- s_parser->setCurrentConsumer(consumer);
- return s_parser;
+ DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGPathParser>, pathParser, (adoptPtrWillBeNoop(new SVGPathParser())));
+ pathParser->setCurrentSource(source);
+ pathParser->setCurrentConsumer(consumer);
+ return pathParser.get();
}
static SVGPathBlender* globalSVGPathBlender()
{
- static SVGPathBlender* s_blender = 0;
- if (!s_blender)
- s_blender = new SVGPathBlender;
-
- return s_blender;
+ DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGPathBlender>, pathBlender, (adoptPtrWillBeNoop(new SVGPathBlender())));
+ return pathBlender.get();
}
bool buildPathFromString(const String& d, Path& result)
@@ -102,7 +85,7 @@ bool buildPathFromString(const String& d, Path& result)
SVGPathBuilder* builder = globalSVGPathBuilder(result);
- OwnPtr<SVGPathStringSource> source = SVGPathStringSource::create(d);
+ OwnPtrWillBeRawPtr<SVGPathStringSource> source = SVGPathStringSource::create(d);
SVGPathParser* parser = globalSVGPathParser(source.get(), builder);
bool ok = parser->parsePathDataFromSource(NormalizedParsing);
parser->cleanup();
@@ -152,7 +135,7 @@ bool buildSVGPathByteStreamFromString(const String& d, SVGPathByteStream* result
SVGPathByteStreamBuilder* builder = globalSVGPathByteStreamBuilder(result);
- OwnPtr<SVGPathStringSource> source = SVGPathStringSource::create(d);
+ OwnPtrWillBeRawPtr<SVGPathStringSource> source = SVGPathStringSource::create(d);
SVGPathParser* parser = globalSVGPathParser(source.get(), builder);
bool ok = parser->parsePathDataFromSource(parsingMode);
parser->cleanup();
« no previous file with comments | « Source/core/svg/SVGPathUtilities.h ('k') | Source/core/svg/SVGPatternElement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698