ExecutionHarness.h [plain text]
#ifndef ExecutionHarness_h
#define ExecutionHarness_h
#include <wtf/Platform.h>
#if ENABLE(JIT)
#include "JITDriver.h"
#include "LLIntEntrypoints.h"
namespace JSC {
template<typename CodeBlockType>
inline bool prepareForExecution(JSGlobalData& globalData, OwnPtr<CodeBlockType>& codeBlock, JITCode& jitCode, JITCode::JITType jitType)
{
#if ENABLE(LLINT)
if (JITCode::isBaselineCode(jitType)) {
LLInt::getEntrypoint(globalData, codeBlock.get(), jitCode);
codeBlock->setJITCode(jitCode, MacroAssemblerCodePtr());
return true;
}
#endif // ENABLE(LLINT)
return jitCompileIfAppropriate(globalData, codeBlock, jitCode, jitType, JITCode::isBaselineCode(jitType) ? JITCompilationMustSucceed : JITCompilationCanFail);
}
inline bool prepareFunctionForExecution(JSGlobalData& globalData, OwnPtr<FunctionCodeBlock>& codeBlock, JITCode& jitCode, MacroAssemblerCodePtr& jitCodeWithArityCheck, SharedSymbolTable*& symbolTable, JITCode::JITType jitType, CodeSpecializationKind kind)
{
#if ENABLE(LLINT)
if (JITCode::isBaselineCode(jitType)) {
LLInt::getFunctionEntrypoint(globalData, kind, jitCode, jitCodeWithArityCheck);
codeBlock->setJITCode(jitCode, jitCodeWithArityCheck);
return true;
}
#else
UNUSED_PARAM(kind);
#endif // ENABLE(LLINT)
return jitCompileFunctionIfAppropriate(globalData, codeBlock, jitCode, jitCodeWithArityCheck, symbolTable, jitType, JITCode::isBaselineCode(jitType) ? JITCompilationMustSucceed : JITCompilationCanFail);
}
}
#endif // ENABLE(JIT)
#endif // ExecutionHarness_h