Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(544)

Side by Side Diff: Source/core/html/parser/HTMLFormattingElementList.h

Issue 932403002: InlinedVisitor: Migrate html to use inlined tracing (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google, Inc. All Rights Reserved. 2 * Copyright (C) 2010 Google, Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 // callers should check isMarker() before calling element(). 70 // callers should check isMarker() before calling element().
71 ASSERT(m_item); 71 ASSERT(m_item);
72 return m_item->element(); 72 return m_item->element();
73 } 73 }
74 void replaceElement(PassRefPtrWillBeRawPtr<HTMLStackItem> item) { m_item = item; } 74 void replaceElement(PassRefPtrWillBeRawPtr<HTMLStackItem> item) { m_item = item; }
75 75
76 // Needed for use with Vector. These are super-hot and must be inline. 76 // Needed for use with Vector. These are super-hot and must be inline.
77 bool operator==(Element* element) const { return !m_item ? !element : m_ item->element() == element; } 77 bool operator==(Element* element) const { return !m_item ? !element : m_ item->element() == element; }
78 bool operator!=(Element* element) const { return !m_item ? !!element : m _item->element() != element; } 78 bool operator!=(Element* element) const { return !m_item ? !!element : m _item->element() != element; }
79 79
80 void trace(Visitor* visitor) { visitor->trace(m_item); } 80 DEFINE_INLINE_TRACE() { visitor->trace(m_item); }
81 81
82 private: 82 private:
83 RefPtrWillBeMember<HTMLStackItem> m_item; 83 RefPtrWillBeMember<HTMLStackItem> m_item;
84 }; 84 };
85 85
86 class Bookmark { 86 class Bookmark {
87 public: 87 public:
88 explicit Bookmark(Entry* entry) 88 explicit Bookmark(Entry* entry)
89 : m_hasBeenMoved(false) 89 : m_hasBeenMoved(false)
90 , m_mark(entry) 90 , m_mark(entry)
(...skipping 27 matching lines...) Expand all
118 Bookmark bookmarkFor(Element*); 118 Bookmark bookmarkFor(Element*);
119 void swapTo(Element* oldElement, PassRefPtrWillBeRawPtr<HTMLStackItem> newIt em, const Bookmark&); 119 void swapTo(Element* oldElement, PassRefPtrWillBeRawPtr<HTMLStackItem> newIt em, const Bookmark&);
120 120
121 void appendMarker(); 121 void appendMarker();
122 // clearToLastMarker also clears the marker (per the HTML5 spec). 122 // clearToLastMarker also clears the marker (per the HTML5 spec).
123 void clearToLastMarker(); 123 void clearToLastMarker();
124 124
125 const Entry& at(size_t i) const { return m_entries[i]; } 125 const Entry& at(size_t i) const { return m_entries[i]; }
126 Entry& at(size_t i) { return m_entries[i]; } 126 Entry& at(size_t i) { return m_entries[i]; }
127 127
128 void trace(Visitor* visitor) { visitor->trace(m_entries); } 128 DEFINE_INLINE_TRACE() { visitor->trace(m_entries); }
129 129
130 #ifndef NDEBUG 130 #ifndef NDEBUG
131 void show(); 131 void show();
132 #endif 132 #endif
133 133
134 private: 134 private:
135 Entry* first() { return &at(0); } 135 Entry* first() { return &at(0); }
136 136
137 // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html# list-of-active-formatting-elements 137 // http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html# list-of-active-formatting-elements
138 // These functions enforce the "Noah's Ark" condition, which removes redunda nt mis-nested elements. 138 // These functions enforce the "Noah's Ark" condition, which removes redunda nt mis-nested elements.
139 void tryToEnsureNoahsArkConditionQuickly(HTMLStackItem*, WillBeHeapVector<Ra wPtrWillBeMember<HTMLStackItem>>& remainingCandiates); 139 void tryToEnsureNoahsArkConditionQuickly(HTMLStackItem*, WillBeHeapVector<Ra wPtrWillBeMember<HTMLStackItem>>& remainingCandiates);
140 void ensureNoahsArkCondition(HTMLStackItem*); 140 void ensureNoahsArkCondition(HTMLStackItem*);
141 141
142 WillBeHeapVector<Entry> m_entries; 142 WillBeHeapVector<Entry> m_entries;
143 }; 143 };
144 144
145 } // namespace blink 145 } // namespace blink
146 146
147 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::HTMLFormattingElementList::Ent ry); 147 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::HTMLFormattingElementList::Ent ry);
148 148
149 #endif // HTMLFormattingElementList_h 149 #endif // HTMLFormattingElementList_h
OLDNEW
« no previous file with comments | « Source/core/html/parser/HTMLElementStack.cpp ('k') | Source/core/html/parser/HTMLResourcePreloader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698