Reviewed by Sam Weinig.

        - make BidiContext a RefCounted class, starting with a refcount of 1,
          and share the root BidiContexts.

        * platform/graphics/GraphicsContext.cpp:
        (WebCore::GraphicsContext::drawBidiText): Use BidiContext::create().
        * platform/text/BidiContext.cpp:
        (WebCore::BidiContext::create): Added. For the four "root" contexts,
        returns a reference to a shared static BidiContext.
        * platform/text/BidiContext.h:
        (WebCore::BidiContext::BidiContext):
        * platform/text/BidiResolver.h:
        (WebCore::::commitExplicitEmbedding): Use BidiContext::create().
        * rendering/bidi.cpp:
        (WebCore::RenderBlock::determineStartPosition): Ditto.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@42895 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/rendering/bidi.cpp b/WebCore/rendering/bidi.cpp
index dac6e79..c4d9246 100644
--- a/WebCore/rendering/bidi.cpp
+++ b/WebCore/rendering/bidi.cpp
@@ -1264,12 +1264,12 @@
     #endif
             ;
 
-        BidiContext* context = new BidiContext(ltr ? 0 : 1, ltr ? LeftToRight : RightToLeft, style()->unicodeBidi() == Override);
+        Direction direction = ltr ? LeftToRight : RightToLeft;
+        resolver.setLastStrongDir(direction);
+        resolver.setLastDir(direction);
+        resolver.setEorDir(direction);
+        resolver.setContext(BidiContext::create(ltr ? 0 : 1, direction, style()->unicodeBidi() == Override));
 
-        resolver.setLastStrongDir(context->dir());
-        resolver.setLastDir(context->dir());
-        resolver.setEorDir(context->dir());
-        resolver.setContext(context);
         startObj = bidiFirst(this, &resolver);
     }