mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 1209193 - Cache PR_GetNumberOfProcessors when checking to do off-main-thread script compilation. r=luke
This commit is contained in:
parent
dd395e3023
commit
21840c31cf
@ -114,6 +114,7 @@ nsScriptLoadRequestList::Contains(nsScriptLoadRequest* aElem)
|
||||
nsScriptLoader::nsScriptLoader(nsIDocument *aDocument)
|
||||
: mDocument(aDocument),
|
||||
mBlockerCount(0),
|
||||
mNumberOfProcessors(0),
|
||||
mEnabled(true),
|
||||
mDeferEnabled(false),
|
||||
mDocumentParsingDone(false),
|
||||
@ -1503,6 +1504,18 @@ nsScriptLoader::ContinueParserAsync(nsScriptLoadRequest* aParserBlockingRequest)
|
||||
aParserBlockingRequest->mElement->ContinueParserAsync();
|
||||
}
|
||||
|
||||
uint32_t
|
||||
nsScriptLoader::NumberOfProcessors()
|
||||
{
|
||||
if (mNumberOfProcessors > 0)
|
||||
return mNumberOfProcessors;
|
||||
|
||||
int32_t numProcs = PR_GetNumberOfProcessors();
|
||||
if (numProcs > 0)
|
||||
mNumberOfProcessors = numProcs;
|
||||
return mNumberOfProcessors;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsScriptLoader::PrepareLoadedRequest(nsScriptLoadRequest* aRequest,
|
||||
nsIStreamLoader* aLoader,
|
||||
@ -1589,7 +1602,7 @@ nsScriptLoader::PrepareLoadedRequest(nsScriptLoadRequest* aRequest,
|
||||
aRequest->mProgress = nsScriptLoadRequest::Progress_DoneLoading;
|
||||
|
||||
// If this is currently blocking the parser, attempt to compile it off-main-thread.
|
||||
if (aRequest == mParserBlockingRequest && (PR_GetNumberOfProcessors() > 1)) {
|
||||
if (aRequest == mParserBlockingRequest && (NumberOfProcessors() > 1)) {
|
||||
nsresult rv = AttemptAsyncScriptCompile(aRequest);
|
||||
if (rv == NS_OK) {
|
||||
NS_ASSERTION(aRequest->mProgress == nsScriptLoadRequest::Progress_Compiling,
|
||||
|
@ -487,6 +487,7 @@ private:
|
||||
JS::Handle<JSObject *> aScopeChain,
|
||||
JS::CompileOptions *aOptions);
|
||||
|
||||
uint32_t NumberOfProcessors();
|
||||
nsresult PrepareLoadedRequest(nsScriptLoadRequest* aRequest,
|
||||
nsIStreamLoader* aLoader,
|
||||
nsresult aStatus,
|
||||
@ -530,6 +531,7 @@ private:
|
||||
// XXXbz do we want to cycle-collect these or something? Not sure.
|
||||
nsTArray< nsRefPtr<nsScriptLoader> > mPendingChildLoaders;
|
||||
uint32_t mBlockerCount;
|
||||
uint32_t mNumberOfProcessors;
|
||||
bool mEnabled;
|
||||
bool mDeferEnabled;
|
||||
bool mDocumentParsingDone;
|
||||
|
Loading…
Reference in New Issue
Block a user