Bug 610901 - need to explicitly construct/destruct JITScript (r=dvander)

This commit is contained in:
Luke Wagner 2010-11-10 11:43:22 -08:00
parent 80ba8d7cfd
commit 94f3b9a8d2
3 changed files with 8 additions and 8 deletions

View File

@ -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());

View File

@ -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;
}
}

View File

@ -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();
};
/*