Closed
Bug 197205
Opened 22 years ago
Closed 22 years ago
remove null checks from GetStyleData callers
Categories
(Core :: CSS Parsing and Computation, defect, P3)
Core
CSS Parsing and Computation
Tracking
()
RESOLVED
FIXED
mozilla1.5alpha
People
(Reporter: dbaron, Assigned: dbaron)
References
Details
(Whiteboard: [patch])
Attachments
(2 files, 1 obsolete file)
143.92 KB,
application/x-gzip
|
brendan
:
approval1.4+
|
Details |
22.97 KB,
patch
|
roc
:
review+
roc
:
superreview+
|
Details | Diff | Splinter Review |
Now that bug 154751 has landed, we should remove all the null-checks after calls
to GetStyleData.
(It also might be worth converting to the templatized form, although I should
probably double-check that that doesn't change codesize.)
Assignee | ||
Updated•22 years ago
|
Status: NEW → ASSIGNED
Priority: -- → P3
Target Milestone: --- → mozilla1.4beta
I think whoever does this should get r+sr-in-advance and then just go do it.
Assignee | ||
Updated•22 years ago
|
Target Milestone: mozilla1.4beta → mozilla1.5beta
Assignee | ||
Comment 2•22 years ago
|
||
This patch removes the null checks and also converts all callers to use the
typesafe template. It modifies the template so that it works with nsRefPtr.
It also changes the return type of nsIFrame::GetStyleData so that the result is
returned instead of being an out parameter.
Assignee | ||
Updated•22 years ago
|
Attachment #122808 -
Flags: superreview?(roc+moz)
Attachment #122808 -
Flags: review?(roc+moz)
Assignee | ||
Updated•22 years ago
|
Target Milestone: mozilla1.5beta → mozilla1.4final
Assignee | ||
Comment 3•22 years ago
|
||
Comment on attachment 122808 [details]
patch
In this patch, there are nontrivial changes in nsStyleContext.h,
nsIFrame.h, and nsFrame.{h,cpp}.
I also cleaned up the SVG stuff in nsRuleNode.{h,cpp} -- I commented the
struct in nsRuleNode.h in the style of other structs, and I applied the
fix to bug 111815 to ComputeSVGData in nsRuleNode.cpp.
Pretty much everything else was conversion to the templatized forms and
removal of null checks.
Assignee | ||
Comment 4•22 years ago
|
||
Oh, there were also some places where I removed |.get()| from the end of the
first parameter to the function template |GetStyleData| (no longer needed with
this patch) or added |::| to the beginning of the call (good style everywhere,
since it's needed within nsIFrame implementations).
I should have said this before you did all this work, but ...
Since we're trying to get away from unnecessary out parameters, why not have a
family of methods
template <class Source> const nsStyleBorder* GetBorderStyle(const Source& source);
template <class Source> const nsStylePadding* GetPaddingStyle(const Source& source);
etc?
Assignee | ||
Comment 6•22 years ago
|
||
If we went that way, I'd rather they were just methods on nsIFrame and
nsStyleContext (since there's no need for template type deduction). I might
rather they be:
const nsStyleBorder* StyleBorder() { return [...]; }
etc.
It's a little less general, but I guess I do prefer it. Maybe I'll do another
pass over the tree. But first, what do others think of the idea?
Target Milestone: mozilla1.4final → mozilla1.5alpha
Assignee | ||
Comment 7•22 years ago
|
||
(It's worth noting that with the current code at least some compilers will
optimize away the performance cost of having an out parameter rather than a
return value. However, I think I like the syntax I propose in my previous
comment better.)
Yes, it's only a syntactic issue, not a performance issue.
I would slightly prefer the "GetBorderStyle()" naming scheme.
Comment 9•22 years ago
|
||
And generate the function signatures using preprocessing? Sure, that
could work.... We could also template GetStyleData on the return type,
no? (That will mean simpler changes to callers, I guess; not sure whether
I prefer it to having names like GetBorderStyle or whatever).
> We could also template GetStyleData on the return type
No, you can't do that.
> And generate the function signatures using preprocessing?
We could, although we're not talking about much code.
Assignee | ||
Comment 11•22 years ago
|
||
This implements what is described above -- inline methods on nsIFrame and
nsStyleContext called GetStyleBorder, GetStyleColor, etc. Otherwise it's
pretty similar to the previous patch, although there was an additional spot or
two where I couldn't resist a little cleanup.
Assignee | ||
Updated•22 years ago
|
Attachment #122808 -
Attachment is obsolete: true
Assignee | ||
Updated•22 years ago
|
Whiteboard: [patch]
Comment on attachment 122808 [details]
patch
wonderful. r+sr=roc+moz
Attachment #122808 -
Flags: superreview?(roc+moz)
Attachment #122808 -
Flags: superreview+
Attachment #122808 -
Flags: review?(roc+moz)
Attachment #122808 -
Flags: review+
Assignee | ||
Comment 13•22 years ago
|
||
Comment on attachment 123099 [details]
patch
This is relatively low-risk (and I'll double-check it again before I land), and
I think it's worth landing before we branch to make it easier to move things
back and forth between branch and trunk after we branch.
(I assume roc noted r+sr on the wrong attachment.)
Attachment #123099 -
Flags: approval1.4?
woops, yeah, I meant to r+sr the latest patch
Comment 15•22 years ago
|
||
Comment on attachment 123099 [details]
patch
a=brendan@mozilla.org for 1.4final.
/be
Attachment #123099 -
Flags: approval1.4? → approval1.4+
Assignee | ||
Comment 16•22 years ago
|
||
Fix checked in to trunk, 2003-05-14 20:42 PDT.
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 17•20 years ago
|
||
Assignee | ||
Updated•20 years ago
|
Attachment #167802 -
Flags: superreview?(roc)
Attachment #167802 -
Flags: review?(roc)
Attachment #167802 -
Flags: superreview?(roc)
Attachment #167802 -
Flags: superreview+
Attachment #167802 -
Flags: review?(roc)
Attachment #167802 -
Flags: review+
Assignee | ||
Updated•20 years ago
|
Attachment #167802 -
Attachment description: clean up callers of old api that have crept back in → clean up callers of old api that have crept back in (checked in 2004-12-03 22:31 -0800)
You need to log in
before you can comment on or make changes to this bug.
Description
•