mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1054538 - Store the IonScript in AsmJSModule::ExitDatum for direct access in ~AsmJSModule (r=hannes)
--HG-- extra : rebase_source : e4afb40b979f98a1195163ef3728386a88cd7266
This commit is contained in:
parent
6f236e1960
commit
30f74115ef
@ -121,18 +121,11 @@ AsmJSModule::~AsmJSModule()
|
|||||||
if (code_) {
|
if (code_) {
|
||||||
for (unsigned i = 0; i < numExits(); i++) {
|
for (unsigned i = 0; i < numExits(); i++) {
|
||||||
AsmJSModule::ExitDatum &exitDatum = exitIndexToGlobalDatum(i);
|
AsmJSModule::ExitDatum &exitDatum = exitIndexToGlobalDatum(i);
|
||||||
if (!exitDatum.fun)
|
if (!exitDatum.ionScript)
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!exitDatum.fun->hasScript())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
JSScript *script = exitDatum.fun->nonLazyScript();
|
|
||||||
if (!script->hasIonScript())
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
jit::DependentAsmJSModuleExit exit(this, i);
|
jit::DependentAsmJSModuleExit exit(this, i);
|
||||||
script->ionScript()->removeDependentAsmJSModule(exit);
|
exitDatum.ionScript->removeDependentAsmJSModule(exit);
|
||||||
}
|
}
|
||||||
|
|
||||||
DeallocateExecutableMemory(code_, pod.totalBytes_);
|
DeallocateExecutableMemory(code_, pod.totalBytes_);
|
||||||
@ -536,7 +529,9 @@ TryEnablingIon(JSContext *cx, AsmJSModule &module, HandleFunction fun, uint32_t
|
|||||||
if (!ionScript->addDependentAsmJSModule(cx, DependentAsmJSModuleExit(&module, exitIndex)))
|
if (!ionScript->addDependentAsmJSModule(cx, DependentAsmJSModuleExit(&module, exitIndex)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
module.exitIndexToGlobalDatum(exitIndex).exit = module.ionExitTrampoline(module.exit(exitIndex));
|
AsmJSModule::ExitDatum &exitDatum = module.exitIndexToGlobalDatum(exitIndex);
|
||||||
|
exitDatum.exit = module.ionExitTrampoline(module.exit(exitIndex));
|
||||||
|
exitDatum.ionScript = ionScript;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -737,8 +732,10 @@ AsmJSModule::staticallyLink(ExclusiveContext *cx)
|
|||||||
// Initialize global data segment
|
// Initialize global data segment
|
||||||
|
|
||||||
for (size_t i = 0; i < exits_.length(); i++) {
|
for (size_t i = 0; i < exits_.length(); i++) {
|
||||||
exitIndexToGlobalDatum(i).exit = interpExitTrampoline(exits_[i]);
|
AsmJSModule::ExitDatum &exitDatum = exitIndexToGlobalDatum(i);
|
||||||
exitIndexToGlobalDatum(i).fun = nullptr;
|
exitDatum.exit = interpExitTrampoline(exits_[i]);
|
||||||
|
exitDatum.fun = nullptr;
|
||||||
|
exitDatum.ionScript = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
JS_ASSERT(isStaticallyLinked());
|
JS_ASSERT(isStaticallyLinked());
|
||||||
|
@ -402,6 +402,7 @@ class AsmJSModule
|
|||||||
struct ExitDatum
|
struct ExitDatum
|
||||||
{
|
{
|
||||||
uint8_t *exit;
|
uint8_t *exit;
|
||||||
|
jit::IonScript *ionScript;
|
||||||
HeapPtrFunction fun;
|
HeapPtrFunction fun;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1339,7 +1340,9 @@ class AsmJSModule
|
|||||||
}
|
}
|
||||||
void detachIonCompilation(size_t exitIndex) const {
|
void detachIonCompilation(size_t exitIndex) const {
|
||||||
JS_ASSERT(isFinished());
|
JS_ASSERT(isFinished());
|
||||||
exitIndexToGlobalDatum(exitIndex).exit = interpExitTrampoline(exit(exitIndex));
|
ExitDatum &exitDatum = exitIndexToGlobalDatum(exitIndex);
|
||||||
|
exitDatum.exit = interpExitTrampoline(exit(exitIndex));
|
||||||
|
exitDatum.ionScript = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user