Title: [136797] trunk/Source/WebCore
Revision
136797
Author
hara...@chromium.org
Date
2012-12-05 21:47:51 -0800 (Wed, 05 Dec 2012)

Log Message

[V8] Optimize v8StringOrNull() and v8StringOrUndefined()
https://bugs.webkit.org/show_bug.cgi?id=104206

Reviewed by Adam Barth.

Currently v8StringOrNull() and v8StringOrUndefined() are checking
a null string twice. It is redundant.

[div.localName]
Before this patch: 20.03 ns
After this patch:  19.34 ns

* bindings/v8/V8Binding.h:
(WebCore::v8StringOrNull):
(WebCore::v8StringOrUndefined):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (136796 => 136797)


--- trunk/Source/WebCore/ChangeLog	2012-12-06 05:35:25 UTC (rev 136796)
+++ trunk/Source/WebCore/ChangeLog	2012-12-06 05:47:51 UTC (rev 136797)
@@ -1,5 +1,23 @@
 2012-12-05  Kentaro Hara  <hara...@chromium.org>
 
+        [V8] Optimize v8StringOrNull() and v8StringOrUndefined()
+        https://bugs.webkit.org/show_bug.cgi?id=104206
+
+        Reviewed by Adam Barth.
+
+        Currently v8StringOrNull() and v8StringOrUndefined() are checking
+        a null string twice. It is redundant.
+
+        [div.localName]
+        Before this patch: 20.03 ns
+        After this patch:  19.34 ns
+
+        * bindings/v8/V8Binding.h:
+        (WebCore::v8StringOrNull):
+        (WebCore::v8StringOrUndefined):
+
+2012-12-05  Kentaro Hara  <hara...@chromium.org>
+
         [V8] Optimize v8String() for uninitialized DOM attributes
         https://bugs.webkit.org/show_bug.cgi?id=104205
 

Modified: trunk/Source/WebCore/bindings/v8/V8Binding.h (136796 => 136797)


--- trunk/Source/WebCore/bindings/v8/V8Binding.h	2012-12-06 05:35:25 UTC (rev 136796)
+++ trunk/Source/WebCore/bindings/v8/V8Binding.h	2012-12-06 05:47:51 UTC (rev 136797)
@@ -154,14 +154,22 @@
         return V8PerIsolateData::from(isolate)->stringCache()->v8ExternalString(string.impl(), isolate);
     }
 
-    inline v8::Handle<v8::Value> v8StringOrNull(const String& str, v8::Isolate* isolate = 0)
+    inline v8::Handle<v8::Value> v8StringOrNull(const String& string, v8::Isolate* isolate = 0)
     {
-        return str.isNull() ? v8::Handle<v8::Value>(v8NullWithCheck(isolate)) : v8::Handle<v8::Value>(v8String(str, isolate));
+        if (UNLIKELY(!isolate))
+            isolate = v8::Isolate::GetCurrent();
+        if (string.isNull())
+            return v8Null(isolate);
+        return V8PerIsolateData::from(isolate)->stringCache()->v8ExternalString(string.impl(), isolate);
     }
 
-    inline v8::Handle<v8::Value> v8StringOrUndefined(const String& str, v8::Isolate* isolate = 0)
+    inline v8::Handle<v8::Value> v8StringOrUndefined(const String& string, v8::Isolate* isolate = 0)
     {
-        return str.isNull() ? v8::Handle<v8::Value>(v8::Undefined()) : v8::Handle<v8::Value>(v8String(str, isolate));
+        if (UNLIKELY(!isolate))
+            isolate = v8::Isolate::GetCurrent();
+        if (string.isNull())
+            return v8::Undefined(isolate);
+        return V8PerIsolateData::from(isolate)->stringCache()->v8ExternalString(string.impl(), isolate);
     }
 
     inline v8::Handle<v8::Integer> v8Integer(int value, v8::Isolate* isolate = 0)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to