mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-10 10:18:38 +09:00
Introduce a new non-heap-allocated type for holding nsStringBuffer* in the HTML parser.
An innerHTML setter profile shows about 10% of the time being spent under nsHtml5HtmlAttributes::clear, mostly deleting nsStrings.
This commit is contained in:
parent
41758fcea8
commit
1be77e0f3f
34 changed files with 719 additions and 358 deletions
|
|
@ -35,7 +35,7 @@
|
|||
#include "nsIAtom.h"
|
||||
#include "nsHtml5AtomTable.h"
|
||||
#include "nsITimer.h"
|
||||
#include "nsString.h"
|
||||
#include "nsHtml5String.h"
|
||||
#include "nsNameSpaceManager.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsTraceRefcnt.h"
|
||||
|
|
@ -103,7 +103,10 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState
|
|||
bool isSrcdocDocument;
|
||||
public:
|
||||
void startTokenization(nsHtml5Tokenizer* self);
|
||||
void doctype(nsIAtom* name, nsString* publicIdentifier, nsString* systemIdentifier, bool forceQuirks);
|
||||
void doctype(nsIAtom* name,
|
||||
nsHtml5String publicIdentifier,
|
||||
nsHtml5String systemIdentifier,
|
||||
bool forceQuirks);
|
||||
void comment(char16_t* buf, int32_t start, int32_t length);
|
||||
void characters(const char16_t* buf, int32_t start, int32_t length);
|
||||
void zeroOriginatingReplacementCharacter();
|
||||
|
|
@ -119,7 +122,8 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState
|
|||
bool isTemplateModeStackEmpty();
|
||||
bool isSpecialParentInForeign(nsHtml5StackNode* stackNode);
|
||||
public:
|
||||
static nsString* extractCharsetFromContent(nsString* attributeValue, nsHtml5TreeBuilder* tb);
|
||||
static nsHtml5String extractCharsetFromContent(nsHtml5String attributeValue,
|
||||
nsHtml5TreeBuilder* tb);
|
||||
private:
|
||||
void checkMetaCharset(nsHtml5HtmlAttributes* attributes);
|
||||
public:
|
||||
|
|
@ -136,9 +140,16 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState
|
|||
void generateImpliedEndTagsExceptFor(nsIAtom* name);
|
||||
void generateImpliedEndTags();
|
||||
bool isSecondOnStackBody();
|
||||
void documentModeInternal(nsHtml5DocumentMode m, nsString* publicIdentifier, nsString* systemIdentifier, bool html4SpecificAdditionalErrorChecks);
|
||||
bool isAlmostStandards(nsString* publicIdentifier, nsString* systemIdentifier);
|
||||
bool isQuirky(nsIAtom* name, nsString* publicIdentifier, nsString* systemIdentifier, bool forceQuirks);
|
||||
void documentModeInternal(nsHtml5DocumentMode m,
|
||||
nsHtml5String publicIdentifier,
|
||||
nsHtml5String systemIdentifier,
|
||||
bool html4SpecificAdditionalErrorChecks);
|
||||
bool isAlmostStandards(nsHtml5String publicIdentifier,
|
||||
nsHtml5String systemIdentifier);
|
||||
bool isQuirky(nsIAtom* name,
|
||||
nsHtml5String publicIdentifier,
|
||||
nsHtml5String systemIdentifier,
|
||||
bool forceQuirks);
|
||||
void closeTheCell(int32_t eltPos);
|
||||
int32_t findLastInTableScopeTdTh();
|
||||
void clearStackBackTo(int32_t eltPos);
|
||||
|
|
@ -224,7 +235,9 @@ class nsHtml5TreeBuilder : public nsAHtml5TreeBuilderState
|
|||
void markMalformedIfScript(nsIContentHandle* elt);
|
||||
void start(bool fragmentMode);
|
||||
void end();
|
||||
void appendDoctypeToDocument(nsIAtom* name, nsString* publicIdentifier, nsString* systemIdentifier);
|
||||
void appendDoctypeToDocument(nsIAtom* name,
|
||||
nsHtml5String publicIdentifier,
|
||||
nsHtml5String systemIdentifier);
|
||||
void elementPushed(int32_t ns, nsIAtom* name, nsIContentHandle* node);
|
||||
void elementPopped(int32_t ns, nsIAtom* name, nsIContentHandle* node);
|
||||
public:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue