mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 610901 - need to explicitly construct/destruct JITScript (r=dvander)
This commit is contained in:
parent
80ba8d7cfd
commit
94f3b9a8d2
@ -426,7 +426,7 @@ mjit::Compiler::finishThisUp(JITScript **jitp)
|
||||
return Compile_Error;
|
||||
}
|
||||
|
||||
JITScript *jit = (JITScript *)cursor;
|
||||
JITScript *jit = new(cursor) JITScript;
|
||||
cursor += sizeof(JITScript);
|
||||
|
||||
jit->code = JSC::MacroAssemblerCodeRef(result, execPool, masm.size() + stubcc.size());
|
||||
|
@ -803,8 +803,7 @@ static inline void Destroy(T &t)
|
||||
t.~T();
|
||||
}
|
||||
|
||||
void
|
||||
mjit::JITScript::release()
|
||||
mjit::JITScript::~JITScript()
|
||||
{
|
||||
#if defined DEBUG && (defined JS_CPU_X86 || defined JS_CPU_X64)
|
||||
void *addr = code.m_code.executableAddress();
|
||||
@ -843,17 +842,17 @@ mjit::ReleaseScriptCode(JSContext *cx, JSScript *script)
|
||||
// must protect against calling ReleaseScriptCode twice.
|
||||
|
||||
if (script->jitNormal) {
|
||||
script->jitNormal->release();
|
||||
script->jitArityCheckNormal = NULL;
|
||||
script->jitNormal->~JITScript();
|
||||
cx->free(script->jitNormal);
|
||||
script->jitNormal = NULL;
|
||||
script->jitArityCheckNormal = NULL;
|
||||
}
|
||||
|
||||
if (script->jitCtor) {
|
||||
script->jitCtor->release();
|
||||
script->jitArityCheckCtor = NULL;
|
||||
script->jitCtor->~JITScript();
|
||||
cx->free(script->jitCtor);
|
||||
script->jitCtor = NULL;
|
||||
script->jitArityCheckCtor = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -321,6 +321,8 @@ struct JITScript {
|
||||
void *fastEntry; /* cached entry, fastest */
|
||||
void *arityCheckEntry; /* arity check address */
|
||||
|
||||
~JITScript();
|
||||
|
||||
bool isValidCode(void *ptr) {
|
||||
char *jitcode = (char *)code.m_code.executableAddress();
|
||||
char *jcheck = (char *)ptr;
|
||||
@ -330,7 +332,6 @@ struct JITScript {
|
||||
void sweepCallICs();
|
||||
void purgeMICs();
|
||||
void purgePICs();
|
||||
void release();
|
||||
};
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user