WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 58060
Prepare access to TreeScope from Node, using NodeRareData
https://bugs.webkit.org/show_bug.cgi?id=58060
Summary
Prepare access to TreeScope from Node, using NodeRareData
Roland Steiner
Reported
2011-04-07 10:41:58 PDT
Add a way to directly access a containing TreeScope from a Node, as a prerequisite step for issue 52963. In the first version, this will be done via NodeRareData to avoid bloating Node.
Attachments
Patch
(14.80 KB, patch)
2011-04-07 13:16 PDT
,
Roland Steiner
no flags
Details
Formatted Diff
Diff
new patch, added ASSERTs
(15.37 KB, patch)
2011-04-08 13:48 PDT
,
Roland Steiner
dglazkov
: review+
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Roland Steiner
Comment 1
2011-04-07 13:16:30 PDT
Created
attachment 88677
[details]
Patch All Layout tests ran successvully, both in Debug and Release.
Roland Steiner
Comment 2
2011-04-07 13:17:16 PDT
"successvully"? @_@;;
Dimitri Glazkov (Google)
Comment 3
2011-04-07 13:23:10 PDT
Comment on
attachment 88677
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=88677&action=review
> Source/WebCore/dom/Node.cpp:493 > + ensureRareData()->setTreeScope(newTreeScope);
Can you explain this a bit more? For example, if I am moving from document A to document B, it seems that in this case _all_ nodes will run this code path and thus gain a bit of weight by RareNodeData being instantiated.
> Source/WebCore/dom/Node.cpp:517 > + if (!node->isElementNode()) > + continue;
This statement is useless?
Roland Steiner
Comment 4
2011-04-07 14:16:01 PDT
Comment on
attachment 88677
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=88677&action=review
>> Source/WebCore/dom/Node.cpp:493 >> + ensureRareData()->setTreeScope(newTreeScope); > > Can you explain this a bit more? For example, if I am moving from document A to document B, it seems that in this case _all_ nodes will run this code path and thus gain a bit of weight by RareNodeData being instantiated.
If the new tree scope is a document, the if-branch should be taken - no extra rare data added (or the tree scope pointer therein reset to 0 in case it's already present). The else-branch is strictly for the case where the new tree scope is NOT a document. It should never be taken currently, as we don't yet have a shadow scope. (Perhaps I should add a ASSERT_NOT_REACHED() with a FIXME to remove it once we land shadow scopes?)
>> Source/WebCore/dom/Node.cpp:517 >> + continue; > > This statement is useless?
D'oh - holy forgotten cleanup, batman!
Dimitri Glazkov (Google)
Comment 5
2011-04-08 07:03:21 PDT
(In reply to
comment #4
)
> (From update of
attachment 88677
[details]
) > View in context:
https://bugs.webkit.org/attachment.cgi?id=88677&action=review
> > >> Source/WebCore/dom/Node.cpp:493 > >> + ensureRareData()->setTreeScope(newTreeScope); > > > > Can you explain this a bit more? For example, if I am moving from document A to document B, it seems that in this case _all_ nodes will run this code path and thus gain a bit of weight by RareNodeData being instantiated. > > If the new tree scope is a document, the if-branch should be taken - no extra rare data added (or the tree scope pointer therein reset to 0 in case it's already present). > > The else-branch is strictly for the case where the new tree scope is NOT a document. It should never be taken currently, as we don't yet have a shadow scope. (Perhaps I should add a ASSERT_NOT_REACHED() with a FIXME to remove it once we land shadow scopes?)
This sounds great!
> > >> Source/WebCore/dom/Node.cpp:517 > >> + continue; > > > > This statement is useless? > > D'oh - holy forgotten cleanup, batman!
Roland Steiner
Comment 6
2011-04-08 13:48:01 PDT
Created
attachment 88869
[details]
new patch, added ASSERTs
Roland Steiner
Comment 7
2011-04-08 13:49:05 PDT
Re-ran all layout tests in DEBUG, successfully. Re-running on RELEASE as well atm.
Dimitri Glazkov (Google)
Comment 8
2011-04-08 13:55:39 PDT
Comment on
attachment 88869
[details]
new patch, added ASSERTs View in context:
https://bugs.webkit.org/attachment.cgi?id=88869&action=review
pretty cool.
> Source/WebCore/ChangeLog:28 > + (WebCore::Document::setDocType): change DOM manipulation methods to update scope of inserted nodes
You can just say "Ditto." here.
> Source/WebCore/ChangeLog:29 > + (WebCore::Document::adoptNode): change DOM manipulation methods to update scope of inserted nodes
Ditto.
> Source/WebCore/dom/Node.cpp:478 > + // FIXME: until we land shadow scopes, there should be no non-document scopes.
Capitalize U.
> Source/WebCore/dom/Node.cpp:521 > + // FIXME: once shadow scopes are landed, update parent scope, etc.
Capitalize O.
> Source/WebCore/dom/TreeScope.cpp:49 > + // FIXME: this branch should be inert until shadow scopes are landed.
Capitalize T.
> Source/WebCore/dom/TreeScope.cpp:69 > + // Cannot reparent a document!
Take out the exclamation point, turn into a sentence. :)
Roland Steiner
Comment 9
2011-04-08 15:37:52 PDT
Committed
r83349
: <
http://trac.webkit.org/changeset/83349
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug