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