Open Bug 102072 Opened 23 years ago Updated 2 years ago

how can we remove the NS_strcmp from nsCSSValue::operator==

Categories

(Core :: CSS Parsing and Computation, defect, P5)

x86
Windows 2000
defect

Tracking

()

mozilla1.2alpha

People

(Reporter: sspitzer, Unassigned)

References

Details

as you will soon see, I have no clue about the style system.

but I've been noticing that values that we are strduping in 
nsCSSValue::operator= are chrome gif urls.

is it possible to atomize the chrome gif urls to avoid the strdup (and eventual 
strcmp?)

nsCRT::strdup(const unsigned short * 0x035ee760) line 510
nsCSSValue::operator=(const nsCSSValue & {...}) line 121 + 13 bytes
MapListForDeclaration(nsICSSDeclaration * 0x035ee8a0, nsCSSList & {...}) line 
1802
CSSStyleRuleImpl::MapRuleInfoInto(CSSStyleRuleImpl * const 0x035ee820, 
nsRuleData * 0x0012e088) line 1641 + 19 bytes
nsRuleNode::WalkRuleTree(nsStyleStructID eStyleStruct_List, nsIStyleContext * 
0x036b9b5c, nsRuleData * 0x0012e088, nsCSSStruct * 0x0012e0cc) line 1332
nsRuleNode::GetListData(nsIStyleContext * 0x036b9b5c) line 1216 + 22 bytes
nsRuleNode::GetStyleData(nsStyleStructID eStyleStruct_List, nsIStyleContext * 
0x036b9b5c) line 4154 + 16 bytes
nsStyleContext::GetStyleData(nsStyleStructID eStyleStruct_List) line 385
nsStyleContext::CalcStyleDifference(nsStyleContext * const 0x036b9b5c, 
nsIStyleContext * 0x036f2cc0, int & 0, int 0) line 690 + 13 bytes
CaptureChange(nsIStyleContext * 0x036f2cc0, nsIStyleContext * 0x036b9b5c, 
nsIFrame * 0x036f4944, nsIContent * 0x03603550, nsStyleChangeList & {...}, int 
0) line 1552
FrameManager::ReResolveStyleContext(nsIPresContext * 0x0339bcf0, nsIFrame * 
0x036f4944, nsIStyleContext * 0x03808d20, nsIContent * 0x04325660, int -1, 
nsIAtom * 0x00000000, nsStyleChangeList & {...}, int 0, int & 0) line 1641 + 29 
bytes
FrameManager::ReResolveStyleContext(nsIPresContext * 0x0339bcf0, nsIFrame * 
0x036f46ac, nsIStyleContext * 0x03739478, nsIContent * 0x035b12e0, int -1, 
nsIAtom * 0x00000000, nsStyleChangeList & {...}, int 0, int & 0) line 1791
FrameManager::ReResolveStyleContext(nsIPresContext * 0x0339bcf0, nsIFrame * 
0x036f450c, nsIStyleContext * 0x036c0868, nsIContent * 0x00000000, int -1, 
nsIAtom * 0x00000000, nsStyleChangeList & {...}, int 0, int & 0) line 1791
FrameManager::ComputeStyleChangeFor(FrameManager * const 0x0339c1a0, 
nsIPresContext * 0x0339bcf0, nsIFrame * 0x036f450c, int -1, nsIAtom * 
0x00000000, nsStyleChangeList & {...}, int 0, int & 0) line 2036
nsCSSFrameConstructor::ContentStatesChanged(nsCSSFrameConstructor * const 
0x0339b0d0, nsIPresContext * 0x0339bcf0, nsIContent * 0x035b12e0, nsIContent * 
0x00000000) line 9687
StyleSetImpl::ContentStatesChanged(StyleSetImpl * const 0x0339b1a0, 
nsIPresContext * 0x0339bcf0, nsIContent * 0x035b12e0, nsIContent * 0x00000000) 
line 1239
PresShell::ContentStatesChanged(PresShell * const 0x0339ccc8, nsIDocument * 
0x03392550, nsIContent * 0x035b12e0, nsIContent * 0x00000000) line 4989 + 49 
bytes
nsXULDocument::ContentStatesChanged(nsXULDocument * const 0x03392550, 
nsIContent * 0x035b12e0, nsIContent * 0x00000000) line 1732
nsEventStateManager::SetContentState(nsEventStateManager * const 0x03535b48, 
nsIContent * 0x035b12e0, int 2) line 3577
nsXULElement::SetFocus(nsXULElement * const 0x035b12e0, nsIPresContext * 
0x0339bcf0) line 4994
nsEventStateManager::PreHandleEvent(nsEventStateManager * const 0x03535b48, 
nsIPresContext * 0x0339bcf0, nsEvent * 0x0012ef88, nsIFrame * 0x02c2e7a4, 
nsEventStatus * 0x0012eef0, nsIView * 0x0339b410) line 623
PresShell::HandleEventInternal(nsEvent * 0x0012ef88, nsIView * 0x0339b410, 
unsigned int 1, nsEventStatus * 0x0012eef0) line 5702 + 43 bytes
PresShell::HandleEvent(PresShell * const 0x0339ccc4, nsIView * 0x0339b410, 
nsGUIEvent * 0x0012ef88, nsEventStatus * 0x0012eef0, int 1, int & 1) line 5633 
+ 25 bytes
nsView::HandleEvent(nsView * const 0x0339b410, nsGUIEvent * 0x0012ef88, 
unsigned int 28, nsEventStatus * 0x0012eef0, int 1, int & 1) line 377
nsViewManager::DispatchEvent(nsViewManager * const 0x0339b5b0, nsGUIEvent * 
0x0012ef88, nsEventStatus * 0x0012eef0) line 2062
HandleEvent(nsGUIEvent * 0x0012ef88) line 68
nsWindow::DispatchEvent(nsWindow * const 0x0339b2d4, nsGUIEvent * 0x0012ef88, 
nsEventStatus & nsEventStatus_eIgnore) line 733 + 10 bytes
nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012ef88) line 754
nsWindow::DispatchFocus(unsigned int 107, int 1) line 4452 + 15 bytes
nsWindow::ProcessMessage(unsigned int 7, unsigned int 67360, long 0, long * 
0x0012f364) line 3371 + 23 bytes
nsWindow::WindowProc(HWND__ * 0x00010728, unsigned int 7, unsigned int 67360, 
long 0) line 1001 + 27 bytes
USER32! 77e13eb0()
USER32! 77e1591b()
USER32! 77e1595d()
NTDLL! 77f9fb83()
GlobalWindowImpl::Focus(GlobalWindowImpl * const 0x0274f9c4) line 1787 + 25 
bytes
nsWebShellWindow::HandleEvent(nsGUIEvent * 0x0012f5d0) line 528
nsWindow::DispatchEvent(nsWindow * const 0x0274e5f4, nsGUIEvent * 0x0012f5d0, 
nsEventStatus & nsEventStatus_eIgnore) line 733 + 10 bytes
nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012f5d0) line 754
nsWindow::DispatchFocus(unsigned int 105, int 1) line 4452 + 15 bytes
nsWindow::ProcessMessage(unsigned int 7, unsigned int 0, long 0, long * 
0x0012f9ac) line 3368 + 23 bytes
nsWindow::WindowProc(HWND__ * 0x00010720, unsigned int 7, unsigned int 0, long 
0) line 1001 + 27 bytes
USER32! 77e13eb0()
USER32! 77e1591b()
USER32! 77e1595d()
NTDLL! 77f9fb83()
USER32! 77e169a7()
USER32! 77e13eb0()
USER32! 77e16469()
USER32! 77e1a6f8()
nsWindow::WindowProc(HWND__ * 0x00010720, unsigned int 6, unsigned int 1, long 
0) line 1008 + 31 bytes
USER32! 77e13eb0()
USER32! 77e1591b()
USER32! 77e1595d()
NTDLL! 77f9fb83()
USER32! 77e191df()
nsAppShell::Run(nsAppShell * const 0x016779b0) line 98 + 24 bytes
nsAppShellService::Run(nsAppShellService * const 0x01672d90) line 442
main1(int 4, char * * 0x00485cd0, nsISupports * 0x00000000) line 1278 + 32 bytes
main(int 4, char * * 0x00485cd0) line 1606 + 37 bytes
mainCRTStartup() line 338 + 17 bytes
KERNEL32! 77e879
Status: NEW → ASSIGNED
Target Milestone: --- → mozilla1.0
any idea on how much time it might save if we did this and what operations it
would speed up?
->098
Target Milestone: mozilla1.0 → mozilla0.9.8
Target Milestone: mozilla0.9.8 → mozilla0.9.9
Target Milestone: mozilla0.9.9 → mozilla1.2
Depends on: 113173
We're no longer strdupping (per patch in bug 113173) but we still use strcmp in
operator==. 
QA Contact: ian → style-system
Summary: how can we remove the strdup from nsCSSValue::operator= → how can we remove the NS_strcmp from nsCSSValue::operator==
Assignee: hyatt → nobody
This is a mass change. Every comment has "assigned-to-new" in it.

I didn't look through the bugs, so I'm sorry if I change a bug which shouldn't be changed. But I guess these bugs are just bugs that were once assigned and people forgot to change the Status back when unassigning.
Status: ASSIGNED → NEW
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.