[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.17-1283-gcf603cf
dglazkov at chromium.org
dglazkov at chromium.org
Tue Jan 5 23:50:17 UTC 2010
The following commit has been merged in the webkit-1.1 branch:
commit f355d9d59cce880876015a4a5a25d7784b109f17
Author: dglazkov at chromium.org <dglazkov at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Dec 15 19:55:33 2009 +0000
2009-12-15 Dimitri Glazkov <dglazkov at chromium.org>
Reviewed by Eric Seidel.
[V8] Generate trivial named property getters.
https://bugs.webkit.org/show_bug.cgi?id=32562
Covered by existing tests.
* bindings/scripts/CodeGeneratorV8.pm: Added GenerateImplementationNamedPropertyGetter.
* bindings/v8/V8Collection.h:
(WebCore::getNamedPropertyOfCollection): Fixed a booboo by using AtomicString like we're supposed to.
* bindings/v8/V8DOMWrapper.cpp:
(WebCore::V8DOMWrapper::getTemplate): Removed code that's now generated.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@52166 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 9283785..e3f3ec1 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,18 @@
+2009-12-15 Dimitri Glazkov <dglazkov at chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ [V8] Generate trivial named property getters.
+ https://bugs.webkit.org/show_bug.cgi?id=32562
+
+ Covered by existing tests.
+
+ * bindings/scripts/CodeGeneratorV8.pm: Added GenerateImplementationNamedPropertyGetter.
+ * bindings/v8/V8Collection.h:
+ (WebCore::getNamedPropertyOfCollection): Fixed a booboo by using AtomicString like we're supposed to.
+ * bindings/v8/V8DOMWrapper.cpp:
+ (WebCore::V8DOMWrapper::getTemplate): Removed code that's now generated.
+
2009-12-15 Brian Weinstein <bweinstein at apple.com>
Reviewed by Timothy Hatcher.
diff --git a/WebCore/bindings/scripts/CodeGeneratorV8.pm b/WebCore/bindings/scripts/CodeGeneratorV8.pm
index 9b6349f..5961946 100644
--- a/WebCore/bindings/scripts/CodeGeneratorV8.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorV8.pm
@@ -1158,6 +1158,22 @@ END
}
}
+sub GenerateImplementationNamedPropertyGetter
+{
+ my $dataNode = shift;
+ my $namedPropertyGetter = shift;
+ my $interfaceName = $dataNode->name;
+
+ if ($dataNode->extendedAttributes->{"HasNameGetter"} && !$namedPropertyGetter->extendedAttributes->{"Custom"}) {
+ $implIncludes{"V8Collection.h"} = 1;
+ my $type = $namedPropertyGetter->type;
+ my $classIndex = uc($type);
+ push(@implContent, <<END);
+ setCollectionNamedGetter<${interfaceName}, ${type}>(desc, V8ClassIndex::${classIndex});
+END
+ }
+}
+
sub GenerateImplementation
{
my $object = shift;
@@ -1247,6 +1263,7 @@ sub GenerateImplementation
}
my $indexer;
+ my $namedPropertyGetter;
# Generate methods for functions.
foreach my $function (@{$dataNode->functions}) {
# hack for addEventListener/RemoveEventListener
@@ -1261,6 +1278,10 @@ sub GenerateImplementation
$indexer = $function->signature;
}
+ if ($function->signature->name eq "namedItem") {
+ $namedPropertyGetter = $function->signature;
+ }
+
# If the function does not need domain security check, we need to
# generate an access getter that returns different function objects
# for different calling context.
@@ -1446,6 +1467,7 @@ END
}
GenerateImplementationIndexer($dataNode, $indexer) if $indexer;
+ GenerateImplementationNamedPropertyGetter($dataNode, $namedPropertyGetter) if $namedPropertyGetter;
# Define our functions with Set() or SetAccessor()
$total_functions = 0;
diff --git a/WebCore/bindings/v8/V8Collection.h b/WebCore/bindings/v8/V8Collection.h
index 8dea839..6961d5a 100644
--- a/WebCore/bindings/v8/V8Collection.h
+++ b/WebCore/bindings/v8/V8Collection.h
@@ -65,7 +65,7 @@ namespace WebCore {
V8ClassIndex::V8WrapperType wrapperType = V8DOMWrapper::domWrapperType(object);
ASSERT(wrapperType != V8ClassIndex::NODE);
Collection* collection = V8DOMWrapper::convertToNativeObject<Collection>(wrapperType, object);
- String propertyName = toWebCoreString(name);
+ AtomicString propertyName = toAtomicWebCoreStringWithNullCheck(name);
return getV8Object<ItemType>(collection->namedItem(propertyName), implementationType);
}
diff --git a/WebCore/bindings/v8/V8DOMWrapper.cpp b/WebCore/bindings/v8/V8DOMWrapper.cpp
index 4263e73..29c7726 100644
--- a/WebCore/bindings/v8/V8DOMWrapper.cpp
+++ b/WebCore/bindings/v8/V8DOMWrapper.cpp
@@ -347,9 +347,6 @@ v8::Persistent<v8::FunctionTemplate> V8DOMWrapper::getTemplate(V8ClassIndex::V8W
instanceTemplate->SetInternalFieldCount(V8Custom::kStyleSheetInternalFieldCount);
break;
}
- case V8ClassIndex::MIMETYPEARRAY:
- setCollectionNamedGetter<MimeTypeArray, MimeType>(descriptor, V8ClassIndex::MIMETYPE);
- break;
case V8ClassIndex::NAMEDNODEMAP: {
// We add an extra internal field to hold a reference to the owner node.
v8::Local<v8::ObjectTemplate> instanceTemplate = descriptor->InstanceTemplate();
@@ -368,12 +365,6 @@ v8::Persistent<v8::FunctionTemplate> V8DOMWrapper::getTemplate(V8ClassIndex::V8W
case V8ClassIndex::NODELIST:
descriptor->InstanceTemplate()->SetNamedPropertyHandler(USE_NAMED_PROPERTY_GETTER(NodeList));
break;
- case V8ClassIndex::PLUGIN:
- setCollectionNamedGetter<Plugin, MimeType>(descriptor, V8ClassIndex::MIMETYPE);
- break;
- case V8ClassIndex::PLUGINARRAY:
- setCollectionNamedGetter<PluginArray, Plugin>(descriptor, V8ClassIndex::PLUGIN);
- break;
case V8ClassIndex::STYLESHEETLIST:
descriptor->InstanceTemplate()->SetNamedPropertyHandler(USE_NAMED_PROPERTY_GETTER(StyleSheetList));
break;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list