Another brick in the wall. Not sure if it's the wall. More like a pillow. But pillows don't have bricks. If they did, they'd be very uncomfortable. But then again, V8 bindings are pretty uncomfortable.
Created attachment 44997 [details] Remove moar indexers.
style-queue ran check-webkit-style on attachment 44997 [details] without any errors.
Comment on attachment 44997 [details] Remove moar indexers. I can hardly resist a patch of all minus lines that doesn't break any tests!
"Remove moar indexers" patch landed as http://trac.webkit.org/changeset/52213. This still leaves 6 indexers hand-set, but we'll have to come back to this from a different angle. Leaving the bug open for that reason.
Comment on attachment 44997 [details] Remove moar indexers. I'd prefer to use one patch per bug, but if you're going to keep this bug open, you need to clear the flags so this patch won't show up as needing to be committed.
I'll use this a master bug to keep my sanity intact. No new patches will go here.
// getter: needs to know its parent has a getter // setter: easy descriptor->InstanceTemplate()->SetIndexedPropertyHandler(USE_INDEXED_PROPERTY_GETTER(HTMLOptionsCollection), USE_INDEXED_PROPERTY_SETTER(HTMLOptionsCollection)); // getter: easy // setter: easy // enumerator: ?? descriptor->InstanceTemplate()->SetIndexedPropertyHandler(USE_INDEXED_PROPERTY_GETTER(HTMLSelectElement), USE_INDEXED_PROPERTY_SETTER(HTMLSelectElement), 0, 0, nodeCollectionIndexedPropertyEnumerator<HTMLSelectElement>, v8::Integer::New(V8ClassIndex::NODE)); // will have to stay custom descriptor->InstanceTemplate()->SetIndexedPropertyHandler(USE_INDEXED_PROPERTY_GETTER(HTMLPlugInElement), USE_INDEXED_PROPERTY_SETTER(HTMLPlugInElement)); // getter: easy // enumerator: ?? instanceTemplate->SetIndexedPropertyHandler(USE_INDEXED_PROPERTY_GETTER(NamedNodeMap), 0, 0, 0, collectionIndexedPropertyEnumerator<NamedNodeMap>, v8::Integer::New(V8ClassIndex::NODE)); // getter: no indication? must assume if has setItem, must have item? // setter: setItem -> HasCustomIndexSetter descriptor->InstanceTemplate()->SetIndexedPropertyHandler(USE_INDEXED_PROPERTY_GETTER(Storage), USE_INDEXED_PROPERTY_SETTER(Storage), 0, USE_INDEXED_PROPERTY_DELETER(Storage)); // stays custom descriptor->PrototypeTemplate()->SetIndexedPropertyHandler(USE_INDEXED_PROPERTY_GETTER(DOMWindow));
It is done.